• 締切済み

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

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

みんなの回答

  • 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

  • シェルの変数値を読み込む

    シェル(sh)で持っている変数($1~$5)をperlのプログラムに渡したいのですが方法がわかりません。 ご存じの方いらっしゃいましたらお願いします。 Q(1) test.sh: $1、$2、$3、$4、$5 にそれぞれ値が格納 ./test.pl $1 $2 $3 $4 $5 ↑シェル側出力はこうですか? Q(2) test.pl: どうやって変数値($1~$5)を受け取るのでしょうか? 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • シェルスクリプトについて

    とあるUNIXサーバが1台あるとします。 でそのマシン上の管理プログラムが同一マシン上にある 「シェルスクリプト(bash)」をキックするとします。 となるとそのシェルスクリプトの実行者(?)は Unixにログオンしているユーザーになるのでしょうか?。 目的としてはそのログインしているユーザーの環境変数 をシェルから参照したいのですが・・ 考え方がWindowsなもので。。すみませんが よろしくお願いします。

  • シェルスクリプト(Linux)【初心者です】

    作成プログラムを実行させ、終了後、プログラムを再起動するシェルスクリプトを作成したいのですが、よくわかりません。

  • シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2

    シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2...のような位置パラメタや、$?,$$,$!,$-のような特殊変数がありますが、これはPerlやRubyもあるようですが、意味や効果、やり方等は同じでしょうか。 当方はPHP,JavaScriptしか触れていませんし、PHPやJavaScriptは、そのような位置パラメタや特殊変数は見当たりませんでした…。 つまり、PerlやRubyはUNIXのコマンドから誕生したスクリプト言語ということでしょうか。 こういった位置パラメタや特殊変数はPerlやRuby以外に他の言語にもありますでしょうか。PythonとかCとかJavaとか…。 また、Bシェルを学んでいる途中ですが、シェルスクリプトの中にはbourne以外にもbashやC Shell,zsh,Perlがありますが、何故Perlが入っているのでしょうか。 Perlをやっている方は別途シェルスクリプトをやる必要はないということでしょうか。

  • シェルの中から他のシェルを呼び出す

    例えば、ひとつのシェルファイル( aaa.sh )の中に、 ------------------------- #!/usr/bin/csh set HOME=/home/test/tmp bbb.sh ------------------------- と記述した場合、bbb.shで変数$HOMEを使いたいと思いましたが、 使えないようです。(HOME: 未定義の変数と表示されます) どなたか、これ以外の方法で、このように シェルからほかのシェルを呼び出して、変数も引き継がれるような方法ご存知ないでしょうか? 多分こーやれば、こうなるかも!みたいなご回答でも結構ですので情報提供をお願いします。 どうぞ宜しくお願い致します。

  • シェルとは

     シェルとは【ユーザと対話する能力を持ち、カーネルに対して操作のお伺いを立てる仲介役のプログラム】と書かれていました。  また、シェルの機能として【コマンドとして入力された名前のプログラムを探し出して起動する。】ということも書かれていました。 そこで疑問を持ちました。前述では仲介役であると述べられてるのに対して、後述での機能ではプログラムを探し出し、起動する.と書かれていてCPUに指示・命令までしてるのか?と不思議に思いました。 下記のように解釈すればいいのでしょうか? プログラム探し出して起動するという命令をCPUに出すのはカーネルであり、あくまでもシェルとはユーザが打ったコマンドをOSが解釈できる形に翻訳してるプログラムにすぎないのですよね? 一般的なシェルの解釈は→仲介役 機能としてのシェルの解釈は→(カーネル+シェル) と考えればよろしいでしょうか?

  • シェルとは

    シェルとはCUIで操作するためのプログラムですか? コマンドプロンプトはシェルの機能の一つなのでしょうか? 2点よろしくお願いします。

  • シェルにおける・・・

    初心者なのですいませんが、シェルにおけるリダイレクション、フィルタ、パイプとは何かを教えてくれませんか?それと簡単なシェルのプログラムも書いてください。また、その実行結果もお願いいたします。

  • シェルとシェルの間で環境変数を引き継ぐ方法

    初めて質問させていただきます。 シェル内でsetenvにて定義された変数を別のシェルにて使う方法があれば教えてください。 よろしくお願いします。

  • シェルスクリプトの変数について

    表題の件について質問させていただきます。 シェルスクリプト内であるプログラムを走らせて No is 2 という標準出力が得られたとします。 そのなかの2という文字を変数につめたいのですがなかなかうまくいきません。 良い方法をご存知の方ご教授よろしくお願いします。