• 締切済み

リナックスのシェルについて

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

みんなの回答

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.3

シェルスクリプト 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 が環境変数です。

juventus17
質問者

お礼

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

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

そうですね、 >例えば、bashコマンドを実行すると、ほかのシェルに切り替わりそこでは有効ではないということで合っているのでしょうか?  ほかのシェル(起動されたbash)に切り替わるということです。  シェルコマンド(bash,csh等)を起動するとそのシェルに移ります。  起動後、exitで戻りますから、「切り替わる」というより階層的になっています。set、env等のコマンドとともに、pstreeコマンドも使って確認するとわかりやすいと思います。

juventus17
質問者

お礼

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

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>そのシェル内とはどういうことなのでしょうか そのシェルのプロセスの中という意味。 >その他のシェルに切り替えるにはどうすればよいのでしょうか? ログインシェルを切り替えたいということ? もう少し何に困っているのか具体的に書いた方がよい。

juventus17
質問者

補足

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

関連するQ&A