为流浪汉设置设置Shell脚本

时间:2014-05-24 04:49:21

标签: shell vagrant

尝试编写一个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)。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

正如mklement0所说,该脚本不会以vagrant用户身份运行:它以root运行。

如果您想以vagrant用户身份运行脚本privileged: false

config.vm.provision :shell, privileged: false, path: "scripts/bootstrap.sh"

正如mklement0所说:使用set -xv调试配置脚本。

如果您想以其他用户身份运行,请不要忘记su user 赢得工作:How do I use su to execute the rest of the bash script as that user?

答案 1 :(得分:2)

如果你想执行像vagrant用户这样的脚本,试试这个。

 su vagrant -l -c "echo Hello world"