さまざまな環境変数を使用したBashシェル

さまざまな環境変数を使用したBashシェル

どういうわけか別の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.shnewからスクリプトをインポートすることもできます。

#!/bin/bash

source path/to/bfin.sh

# the rest of the script goes here

関連情報