bashスクリプトでの.bashrc変更内容を起動したシェルへ反映する

シェルスクリプトでコマンドを実行した時にシェルを再起動する必要がありました

たとえばrubyのrbenvをインストールする場合

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

のコマンドが必要ですが rbenv.shなどに書いて
$ . ./rbenv.sh
としてインストールされますが、最後の

source ~/.bashrc

が、起動したシェルでは効きません
シェルスクリプトは別のシェルを起動して実行されるからです

起動したシェルで手動で
$ source ~/.bashrc
と実行すればいいですが面倒です

そこで

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL --login

としてあげれば起動したシェルでも有効になります

参考)シェルを再起動させる簡単な方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください