我正在制作一个bash脚本,它将安装rbenv
和ruby
。
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
rbenv install $rubyVersion
rbenv global $rubyVersion
但是当调用exec $SHELL
时,bash进程将被新的bash进程代替,并且脚本将停止(当然)。
如何使脚本继续?
答案 0 :(得分:2)
您似乎正在尝试通过修改.bashrc
文件然后调用exec $SHELL
来实现多个目标。这些操作都不会修改正在运行该脚本的shell。要修改当前的外壳,您想“获取” .bashrc
文件。使用“点符号”代替调用exec $SHELL
:
. ~/.bashrc
祝你好运!
答案 1 :(得分:0)
将执行程序$ SHELL行替换为“ $ SHELL”行或完全删除这些行