【问题标题】:bash script unable to automate installing ruby with rbenv and ruby buildbash 脚本无法使用 rbenv 和 ruby​​ build 自动安装 ruby
【发布时间】: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 等)中。

标签: ruby bash shell ruby-2.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

【讨论】:

    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    相关资源
    最近更新 更多