シェルスクリプトでコマンドを実行した時にシェルを再起動する必要がありました
たとえば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
としてあげれば起動したシェルでも有効になります