【发布时间】:2014-07-20 11:59:37
【问题描述】:
下面的 shell 脚本运行没有错误,但是当它完成时,我发现它只运行了安装 rbenv 的脚本的第一部分,但没有从 echo 调用所有行"========= 克隆 ruby 构建 =========" 直到结束。我正在使用 Ubuntu 13.10 Lubuntu 变体。
如果我将脚本中的每个命令直接输入到终端中,一切正常,并且安装了 ruby 2.1.2,但如果改为运行脚本,ruby_build 和 ruby 2.1.2 并没有安装 >rbenv 是。
任何建议如何解决这个问题。
rbenv_ruby_installer.sh
rbenv_install.sh
sudo apt-get -y update && apt-get upgrade
echo "======================================="
echo "========= Cloning Rbenv ========="
echo "======================================="
cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
echo "======================================="
echo "========= Cloning ruby build ========="
echo "======================================="
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
echo "======================================="
echo "========= Installing Ruby with Rbenv ========="
echo "======================================="
rbenv install 2.1.2
rbenv global 2.1.2
rbenv rehash
ruby -v
【问题讨论】:
-
"exec $SHELL" 是你的问题。这会导致 shell 用没有参数、没有脚本、无事可做的方式替换自己。它退出了。
-
感谢您的评论,所以我应该使用 source ~/.bashrc
-
没有。您不应该修改 ~/.bashrc,只需将目录附加到 PATH 的当前值:PATH+=:/path/to/whereever
-
好的,谢谢,但最后一个问题。如果路径没有添加到~/.bashrc,如何保证每次退出终端并启动新的终端实例时,这条路径不丢失?此处讨论了类似的内容:stackoverflow.com/questions/14637979/…
-
是的,您只是不想在每次运行脚本时都附加到 .bashrc。通常,我的 bashrc 有一个循环查找各种目录,并将它们添加到 PATH(和 MANPATH 等)中。