- 締切済み
リナックスのシェルについて
シェル変数はそのシェル内でのみ有効となる(ほかのシェルやプログラムでは有効にならない)と、ある参考書に書いてあるのですがそのシェル内とはどういうことなのでしょうか?また、その他のシェルに切り替えるにはどうすればよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t-okura
- ベストアンサー率75% (253/335)
シェルスクリプト 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 が環境変数です。
- auty
- ベストアンサー率58% (284/486)
そうですね、 >例えば、bashコマンドを実行すると、ほかのシェルに切り替わりそこでは有効ではないということで合っているのでしょうか? ほかのシェル(起動されたbash)に切り替わるということです。 シェルコマンド(bash,csh等)を起動するとそのシェルに移ります。 起動後、exitで戻りますから、「切り替わる」というより階層的になっています。set、env等のコマンドとともに、pstreeコマンドも使って確認するとわかりやすいと思います。
お礼
exitで戻れるんですね!勉強になりました。ありがとうございます。
- koko_u_
- ベストアンサー率18% (459/2509)
>そのシェル内とはどういうことなのでしょうか そのシェルのプロセスの中という意味。 >その他のシェルに切り替えるにはどうすればよいのでしょうか? ログインシェルを切り替えたいということ? もう少し何に困っているのか具体的に書いた方がよい。
補足
説明不足ですいません。 参考書で環境変数とシェル変数の説明について記載されていることなのですが 環境変数は、シェル自身と、そのシェルから起動されるすべてのプロセス (コマンドや別のシェル)で有効となるもの。 シェル変数はそのシェル内でのみ有効となる(ほかのシェルやプログラムでは有効にならない)。とまでしか書いていないのです。 例えば、bashコマンドを実行すると、ほかのシェルに切り替わりそこでは有効ではないということで合っているのでしょうか?
お礼
ありがとうございました。実際確認してみて何となくですが理解できました。