シェルスクリプト内で ~/.bash_profile を再ロードします。

シェルスクリプト内で ~/.bash_profile を再ロードします。

再ロードする必要があるシェルスクリプトを作成しましたが、~/.bash_profile機能しません。コードは次のとおりです。

echo 'export PATH=$PATH":$HOME/.bin"' >> ~/.profile
mkdir ~/.bin
cp passwrdgen ~/.bin
chmod +x ~/.bin/passwrdgen
. ~/.profile
echo Done!

答え1

thrigが指摘したように、PATHはスクリプトが実行されるサブシェルの外部で変更されると予想していますか?

それは動作しません。変数をエクスポートするときは、次の操作を行います。現在のシェルにのみ適用されます。

スクリプトは大丈夫に見えます。スクリプトの下部にPATHを印刷する行を追加して、次のことを確認してください。

echo 'export PATH=$PATH":$HOME/.bin"' >> ~/.profile
mkdir ~/.bin
cp passwrdgen ~/.bin
chmod +x ~/.bin/passwrdgen
. ~/.profile
echo "$PATH"
echo Done!

関連情報