0

下面的 shell 脚本运行没有错误,但是当它完成时,我发现它只运行了安装rbenv的脚本的第一部分,但没有从echo "========= Cloning ruby​​ build调用所有行========="直到最后。我正在使用 Ubuntu 13.10 Lubuntu 变体。

如果我将脚本中的每个命令直接输入到终端中,一切正常,并且安装了 ruby​​ 2.1.2,但如果改为运行脚本,尽管rbenv是,但不会安装ruby​​_build 和 ruby​​ 2.1.2

任何建议如何解决这个问题。

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
4

1 回答 1

1

不要使用:

exec $SHELL

而是将逻辑添加到您的 ~/.bashrc 以查找这些目录。在从某处安装(克隆)层次结构的脚本中,他们可能希望在其 PATH 中添加新目录,但不要在每次运行脚本时自动编辑 ~/.bashrc 文件。添加搜索逻辑:

for d in $HOME/.rbenv/bin $HOME/.rbenv/plugins/ruby-build/bin
do test -d $d && PATH+=:$d ; done
于 2014-05-30T18:52:41.980 回答