• ベストアンサー

UNIXプログラミング execについて。

execveで、引数に環境変数がありますが、これはいったいどういうときに使うのですか?いまいち分かりません。 簡単なシェルスクリプトを作成しているのですが、今は環境変数の意味がよくわからないので、execvpなどを使っています。 path検索をするかしないかの使い分けはわかります。 ですがたとえば、 execv と execve execl とexecle はどう違うのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#6200
noname#6200
回答No.1

execのあとの vはベクトル lはリスト eは環境変数 を表しています。 vとlは引数の与え方が違うと思います。 lは一つずつ','で区切って最後にnullで締めくくる形式で引数を表す文字列へのポインタ。 vは引数の集合へのポインタ eで環境変数を与えるのは環境変数が必要なプログラムだからだと思います。 下のURLはlinuxのmanの日本誤訳です

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/execl.3.html
arcsin
質問者

お礼

環境変数というのがやはりいまいちわからなかったですが、いろいろ書物をあさってしらべたいとおもいます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シェルの作成について(execとexecl)

    こんばんは。 今学校でシェルを作成せよという課題がでています。 課題はサンプルプログラムが用意されていて、 それに改良を加えるというだけのいたってシンプルなものでした。 サンプルと課題プログラムの違いなのですが、 サンプルプログラムでは、子プロセスでプログラムを実行する場合にexeclを用いています。 一方課題ではexecvを用いる使用となっています。 このとき、提出用のレポートの課題を何とすればよいと思いますか? 変な質問だというのはわかるのですが、さっきから適切な表現が思い浮かばず悩んでいます。 文字列配列を用いて、実行プログラムに引数を一度に渡せるシェルを作成せよ。 っていうのもなんだか変だし・・ シェルの作成レポートなのでコマンドという言葉を入れたほうがいいのかな・・と思ったりもしています。 厳しい教官に提出する初めてのレポートなのですごく悩んでいます。 よろしかったら皆様の知恵を貸してください。 よろしくお願いします;

  • シェルスクリプトでの絶対パスの取得

    UNIXのシェルスクリプトで、引数として渡された相対パスから絶対パスを取得するには、そうすればよいでしょうか。 cd 相対パス 変数=`pwd` これが一番普通のやり方でしょうか。 change directory しなくてもできる方法がないのかなあと思ったもので。

  • shでの環境変数参照方法

    bshスクリプト内で、環境変数を参照する方法及び、パスを有効にする方法を教えて下さい。 このシェルスクリプトを手動実行するとうまく環境変数を読めるのですが、cronにて自動実行する時には、環境変数 を読むことができません。 またこの時コマンドも見つからないとでるので、パスも効いてないようです。

  • シェルススクリプト内のパス指定について

    プログラムを実行するシェルスクリプト内に以下のように絶対パスで環境変数の設定用のシェルスクリプトが絶対パスで書かれているのですが、この場合だと環境が変わるたびにシェルスクリプト内のパスを書き換えなければなりません。 /dir1/dir2/dir3/setenv.sh 相対パスにすれば書き換える必要はなくなるのですが、お作法上は相対パスで書くことは問題ない(良いと)されているのでしょうか? ../../dir/setenv.sh

  • 他のアカウントの環境変数を読み込ませ、自作シェルを動作させたいです。

    複数ファイル収集用のシェルを作成(他人作)、起動しましたが、現在使用できるアカウントではパスが通っていないため、目的のファイルの一部が収集できない状態で困っています。シェルの中身を見ましたがパスの指定がなかったため取得できていない状態でした。シェルの中身を書き換えることは他人様作成の為できませんので、、、他のパスの通っているアカウントの環境変数を読み込んだ後、そのシェルを起動したいのですがコマンド(env?)等やり方を教えてもらえないでしょうか。なお読み込ませたい環境変数はパスだけです。宜しく御願い致します。m(__)m

  • unixのシェルで

    シェルを実行して、ファイルAの内容と、引数Aを連結してファイルBを作成したい場合にはどうしたら良いですか? 例> 実行するシェル : test.csh ファイルAの内容 : 123456 引数A : 9 作成したいファイルBの内容 : 1234569 123456と9の間にSPACEは入れないようにしたいのですが、どうしても入ってしまいます。 よろしくお願いします。

  • C言語 一般的な引数の名称について

    C言語での引数の名称について質問です。 一般的に 引数の数は"argc"とか"ac" 引数自体は引数名へのポインタを格納する配列名として"argv"とか"av"にしますよね。 arg : argument c : count v : vector だと思うのですが、なぜ突然ベクタといった名称が使われるのでしょうか? ベクトル計算に配列を使うからという意味でしょうか? そういえばexecファミリでも同じように"v"が利用されていますね。 execv:execute vector 追加で質問なのですが execlというのもあります。 execl:execute list でしょうか?? ベクトル、リストといった名称がどこからきたのか直感的に分からず気持ち悪さを覚えています。 もしお分かりの方がいらっしゃいましたら教えてください。

  • UNIX初心者です2

    一般的にUNIXコマンドといっているものは、 そのマシンで設定されているシェルから提供されているもの という考え方で良いのでしょうか? (UNIXコマンド=シェルコマンドなんでしょうか?) またシェルスクリプトを作成する場合、提供されているコマンドは つかえるのでしょうか?

  • シェルスクリプトの問題が分かりません。

    引数に複数の整数を与えたときに、それらの和を計算するシェルスクリプトを作成する。具体的には $ ./sum.sh 1 2 3 4 5 15 のようになるシェルスクリプトである(引数の個数は可変とする)。 どうしてもわかりません。どうか、よろしくお願いします。

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

このQ&Aのポイント
  • 質問者は、自身の経験や周囲の状況を踏まえて、現代の仕事の特徴について質問しています。
  • 質問者は、「とにかく早くやること」が重視され、仕事の質や出来栄えが二の次になる風潮が広まっていると感じています。
  • この風潮は、さまざまな職種において見られ、素早く行動する人が昇進する傾向にあると感じています。また、日本の教育も急かす傾向にあり、このような働き方が増えたと指摘しています。
回答を見る