ここから本文です

【Linuxについての質問】 「シェル変数」と「環境変数」の具体的な違いがわかり...

red********さん

2008/9/1921:19:01

【Linuxについての質問】

「シェル変数」と「環境変数」の具体的な違いがわかりません。

「シェル変数」は、実行中のコマンドやプログラムからは参照できない、とはどういう事なんでしょうか?

また、「エクスポート」とは、どこかにディレクトリを作成して、その中に「シェル変数」を入れる、というようなイメージなんでしょうか?

さっぱり分かりません。

こんな私にどなたか優しく分かり易くご教授頂けませんでしょうか?

宜しくお願い致します。

閲覧数:
3,948
回答数:
3

違反報告

ベストアンサーに選ばれた回答

えりすさん

編集あり2008/9/2000:07:18

シェル変数とはシェルの動作を設定する変数ですね。

シェル=>なんかのプログラム=>シェル=>なんかのプログラム=>シェル
・・・って感じでLinuxではプログラム上からシェルを呼ぶことができるものが多く、シェル変数はシェルを呼び出したときにその都度設定される。
上の図で、3つのシェルがでてるけど、それぞれのシェル変数は同じかもしれないし、違うかもしれない。
環境変数は変更しない限り常に同じ。

そういうことだと思うんですが、どうでしょうか。

エクスポートは出力することだから、シェル変数をテキストファイルか何かに書き出すことだと思います。
そして、テキストファイルを編集、シェルを呼び出したときにファイルを読み込むように設定すれば、常に同じ環境でシェルを扱うことができます。

ずいぶん触っていないので記憶が曖昧で、zsh、sh、bashなどを覚えていますが、それぞれ特徴がありカスタマイズできます。
シェル変数を適切に設定すれば、例えば「ls」というコマンドを使ったときに、フォルダの時には色を変える、実行ファイルならアンダーライン、という風に表示を変えることができます。
というか有名なLinuxディストリビューションではなんらかしら設定されているはずです。

なので、シェルが参照して、シェル変数の通りに自らの挙動を変えるので、プログラムからは参照できないのだと思います。
うろ覚えの回答で申し訳ないが、こんな感じでどうでしょうか。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

やむさん

編集あり2008/9/2001:44:25

私自身IT始めてから1年程度なのでぽろぽろ認識に誤りがあるところもあると思いますが、

先ずシェルというのは、ログイン時に一回実行されます。
あなたはそのシェルの中でコマンドを実行したり、スクリプトを書いたりなど、行動することになります。
シェル変数を定義すると、、、
[user@host ~]$ var1=test ←シェル変数定義
[user@host ~]$ echo $var1
test
上記の通り、定義された変数は値を返してきます。
ここで、シェル内から新たなシェルを起動します。
[user@host ~]$ bash ←シェルを起動
新しいシェル内で変数を確認してみますと。。。
[user@host ~]$ echo $var1

↑何も返ってきません。。。。新たに起動されたシェル内では、先ほどのシェル内で定義された変数は有効ではないんです。
では、シェルを出てみましょう。
[user@host ~]$ exit
・・・で、もとのログイン時のシェル内に戻ったわけですが、ここで$var1の中身を確認してみると。。。
[user@host ~]$ echo $var1
test
↑おお、ちゃんと返ってきます。(当たり前ですがw)
ここで、$var1をexportして環境変数にしてみます。
(シェル変数をexportすると環境変数になります)
[user@host ~]$ export var1
[user@host ~]$ echo $var1
test
↑当然、ログインシェル内では変数は定義されています。
再び、新しいシェルを起動してみましょう。
[user@host ~]$ bash
そして$var1の中身を見てみると。。。?
[user@host ~]$ echo $var1
test
↑おお。今度はtestって文字が格納されてます。

【まとめ】
シェル変数・・・今いるシェル内でのみ有効な変数。
環境変数・・・・今いるシェルから呼び出されたシェル内でも有効な変数。

・・・・という違いです。分かりにくかったらすみません。。。

gbo********さん

2008/9/2000:34:12

シェル変数はそのシェルだけで有効な変数。
環境変数はそのシェルから起動されたプロセスにも引き継がれる変数。

エクスポートはおそらくexport。
シェル変数を環境変数にすることです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo!知恵袋カテゴリ

一覧を見る

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる