プロが教えるわが家の防犯対策術!

シェル変数はそのシェル内でのみ有効となる(ほかのシェルやプログラムでは有効にならない)と、ある参考書に書いてあるのですがそのシェル内とはどういうことなのでしょうか?また、その他のシェルに切り替えるにはどうすればよいのでしょうか?

A 回答 (3件)

>そのシェル内とはどういうことなのでしょうか


そのシェルのプロセスの中という意味。

>その他のシェルに切り替えるにはどうすればよいのでしょうか?
ログインシェルを切り替えたいということ?


もう少し何に困っているのか具体的に書いた方がよい。

この回答への補足

説明不足ですいません。
参考書で環境変数とシェル変数の説明について記載されていることなのですが
環境変数は、シェル自身と、そのシェルから起動されるすべてのプロセス
(コマンドや別のシェル)で有効となるもの。
シェル変数はそのシェル内でのみ有効となる(ほかのシェルやプログラムでは有効にならない)。とまでしか書いていないのです。
例えば、bashコマンドを実行すると、ほかのシェルに切り替わりそこでは有効ではないということで合っているのでしょうか?

補足日時:2008/02/03 20:48
    • good
    • 0

そうですね、


>例えば、bashコマンドを実行すると、ほかのシェルに切り替わりそこでは有効ではないということで合っているのでしょうか?

 ほかのシェル(起動されたbash)に切り替わるということです。
 シェルコマンド(bash,csh等)を起動するとそのシェルに移ります。

 起動後、exitで戻りますから、「切り替わる」というより階層的になっています。set、env等のコマンドとともに、pstreeコマンドも使って確認するとわかりやすいと思います。
    • good
    • 0
この回答へのお礼

exitで戻れるんですね!勉強になりました。ありがとうございます。

お礼日時:2008/02/11 23:58

シェルスクリプト foo.sh


-------------------------------------
#!/bin/bash
my_name="foo.sh"
export MY_NAME="foo.sh"
/bin/bash bar.sh
echo "in foo.sh my_name=" $my_name
echo "in foo.sh MY_NAME=" $MY_NAME
-------------------------------------

シェルスクリプト bar.sh
-------------------------------------
#!/bin/bash
echo "in bar.sh my_name=" $my_name
echo "in bar.sh MY_NAME=" $MY_NAME
-------------------------------------

bash foo.sh を実行してみてください。

この例では my_name がシェル変数、MY_NAME が環境変数です。
    • good
    • 0
この回答へのお礼

ありがとうございました。実際確認してみて何となくですが理解できました。

お礼日時:2008/02/11 23:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!