
次の内容を含む「init」ファイルがあります。
#!/bin/sh
export PATH=$PATH:/home/me/morph_numsys/software/bin
このbashセッションのためにそのフォルダのパスを設定したいと思います。ただし、スクリプトを実行してもsh init
パスを認識しません。しかし、ただと言うとうまくexport PATH=$PATH:/home/me/morph_numsys/software/bin
いきます。これを行う方法についてのアイデアはありますか?
私はUbuntuとxtermを使用しています。
答え1
「このbashセッションのみ」と言うと、スクリプトを呼び出したbashセッションを意味すると仮定します。
スクリプトを実行すると、新しいシェル環境が作成されます。したがって、変数をエクスポートするときは、その変数を親環境ではなく新しいシェル環境にエクスポートします。私が知っている限り、親環境にアクセスする方法はありません。しかし、bashを使用しているので、いくつかの可能な解決策があります。
使用source
/path/to/init.sh
次のようにスクリプトを実行する代わりに:source /path/to/init.sh
~からバッシュのマニュアルページ:
ソースファイル名[パラメータ]
現在のシェル環境でfilenameのコマンドを読み取り、実行し、filenameで最後に実行されたコマンドの終了ステータスを返します。
スクリプトをシェル関数にし、.bashrcに入れます。
別のオプションは、initを関数にして、次のように.bashrcに入れることです。
function init {
export PATH=$PATH:/home/me/morph_numsys/software/bin
}
その後、端末で実行できますinit
。