尝试编写一个
shell脚本来通过Vagrant在Ubuntu上设置我的服务器环境,并遇到脚本意外结束的问题.我在Vagrant的配置配置选项中添加了shell脚本的路径.
流浪汉:
# Specify our provision script config.vm.provision "shell",path: "scripts/bootstrap.sh"
我的剧本:
#!/bin/bash # Install dependencies for Ruby sudo apt-get update sudo apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common # Setting up rbenv echo 'Setting up rbenv' git clone git://github.com/sstephenson/rbenv.git .rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL
运行之后,我希望将存储库克隆到.rbenv文件夹中,并将rbenv添加到〜/ .bashrc中的$PATH以及评估的rbenv init函数并放入〜/ .bashrc.但是,当在Vagrant的提供步骤上执行脚本时,我最终只是克隆了git存储库,然后终止而不在我的脚本中执行任何其他操作.
输出:
==> default: Processing triggers for libc-bin (2.19-0ubuntu6) ... ==> default: Setting up rbenv ==> default: Cloning into '.rbenv'...
然后脚本终止,〜/ .bashrc保持不变.我想知道如何更改我的shell脚本以便它将执行我想要的操作(将rbenv添加到〜/ .bashrc).有任何想法吗?
正如mklement0所说,脚本不会像流浪者用户那样运行:它以root身份运行.
如果要以流浪者用户身份运行脚本,则需要特权:false.
config.vm.provision :shell,privileged: false,path: "scripts/bootstrap.sh"
正如mklement0所说:使用set -xv调试配置脚本.
如果您想以其他用户身份运行,请不要忘记su用户将无法运行:How do I use su to execute the rest of the bash script as that user?