どういうわけか別のbashシェルに入り、いくつかの環境変数を変更したいと思います。
たとえば、スクリプトを実行しましたが、次bfin.sh
の内容が含まれている場合
export PATH=/home/me/bfin2012:$PATH
この変更された変数を使用してbashシェルを作成したいと思います。どうすればいいですか?
答え1
ファイルに環境変数をロードするには、このsource
コマンドを使用できます。例えば
現在のルートを見る:
> echo $PATH
/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
カスタム環境設定を含むファイル
> cat exports
export PATH="/home/me/bfin2012:$PATH"
export ...
カスタム環境のロード
> source exports
変更を確認してください。
> env | grep '^PATH'
PATH=/home/me/bin2012:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
答え2
変数を設定し、設定された変数をエクスポートしました。入りたい場合新しいこの時点で、変数が存在するbashシェルで簡単に以下を実行できます。
bash
新しいシェルの起動プロセスによって変数が上書きされる可能性があることに注意してください。.bashrc
たとえば、これが発生する可能性があります。
答え3
で終わるようにスクリプトを変更またはexec bash
実行します。
sh -c '. bfin.sh; exec bash'
現在のシェルの環境を変更するには、次のようにします。
. bfin.sh
これ.
(ドットまたはピリオド)組み込みは、関数と同じシェル環境で指定されたスクリプトのコマンドを実行します。
答え4
このbfin.sh
スクリプトを実行しても効果はありません。環境変数の値を変更するPATH
と終了します。変更された変数はスクリプト環境の一部であるため、スクリプトが終了すると失われます。
シェルは、bash
スクリプトを実行する前に変数が参照したファイルを自動的にインポートしますBASH_ENV
。したがって、スクリプトにmyscript
インタプリタを参照する#!
-line があると仮定すると、bash
次はbfin.sh
スクリプトをインポートし、変更された環境を使用してスクリプトを実行します。
BASH_ENV=path/to/bfin.sh ./myscript
bfin.sh
newからスクリプトをインポートすることもできます。
#!/bin/bash
source path/to/bfin.sh
# the rest of the script goes here