HP-UX General
1821817 メンバー
3561 オンライン
109638 解決策
新規ポスト

環境変数の設定

 
yanabon
時折のアドバイザー

環境変数の設定

PATH環境変数を一時的に変更したいと思い、以下のコマンドを実行しましたが反映されません。

env PATH=/opt/java1.5/bin:$PATH

実行すると、設定値が表示され、反映されているように見えるのですが、

追加したパスのコマンドは実行できません。その後envのみ実行すると、初期状態に戻っています。

環境変数を変更するのはenvコマンドではないのでしょうか?
5件の返信5
H_K
頻繁なアドバイザー

環境変数の設定

まず man env を読む。

最初に env を実行してみる。

次に env FOO=BAR を実行してみる。

最後にもう一度 env を実行してみる。

その挙動をみれば、env とはどういうものかわかる。
H_K
頻繁なアドバイザー

環境変数の設定

一時的に変更したいといいますが、その一時的な期間とはどの期間でしょう?

現在のシェルの環境を変えずに、これから実行したいコマンドだけに影響を及ぼしたいのであれば、env を使えばいいでしょう。

現在のシェルが生きている期間だけが目的ならば、Bシェル系ならば FOO=bar と export FOO が、Cシェル系ならば、setenv FOO=bar を使えばいいでしょう。
yoshimura
レギュラーアドバイザー

環境変数の設定

通常環境変数を設定するコマンドは

POSIX 系シェルなら "export", C シェルなら

"setenv" を使います。

"env" コマンドは "env" コマンドの引数に

指定して起動したプログラムに対してのみ

環境変数を変更するものだと思います。

だから "env" コマンドを一旦終えちゃうと

意味が無いんじゃないかと思います。

hazelwood
信頼あるコントリビューター

環境変数の設定

原因については、他の方が書いていらっしゃいますので、そもそもの目的に対して、いくつか方法を書きます。

1. 子シェルを起動し、その中で環境変数を変える。

(子シェルを終了させれば元通り)

2. 別の環境変数(たとえば、PATH_BACKなど)に保存して、PATHを変更する。

(PATH_BACK=$PATH; export PATH=/opt/java1.5/bin:$PATH)

戻すときは、export PATH=$PATH_BACK

3. env PATH=/opt/java1.5/bin:$PATH command

(これがenvコマンド本来の使い方)

Posix-Shellなら、PATH=/opt/java1.5/bin:$PATH command でも同様の結果となる。
yanabon
時折のアドバイザー

環境変数の設定

素人質問に回答してくださってありがとうございます。

Bシェルはほとんど使ったことがなく、setenvがないので、よくわからなくなってしまいました。。

envはそのコマンド実行時のみ有効なのですね。