用于自动化部署站点的脚本shell

时间:2013-10-27 11:32:12

标签: bash shell path

我正在尝试编写一个脚本shell(Mac OS X),用于在启动代理中部署我的Awestruct站点。 所以,我必须在部署之前生成网站。生成站点的命令是: awestruct -g

我的脚本是myscript.sh:

cd /my/site/structure/base/directory
awestruct -g

当事件发生时,系统会启动此脚本。

但问题是它不知道awestruct ......

我的awestruct程序是我的ruby安装的一部分,并被添加到我的PATH变量中。

当我手动运行脚本时,它可以工作(因为我的用户是lauynching它) 当系统检测到事件并运行脚本时,结果为:

awestruct: command not found

问题是 PATH ...

2 个答案:

答案 0 :(得分:1)

如果它是手动工作,那么在它工作的同一提示符下,运行命令:

which awestruct

那将以完整路径打印程序文件,让我们假设/usr/local/bin/awestruct,但使用它实际上是什么。然后在脚本中使用它,例如:

cd /my/site/structure/base/directory
/usr/local/bin/awestruct -g

这假设没有其他环境变量,仅为您的帐户定义,awestruct需要。如果有,那么找出它们是什么,并在运行awestruct之前将它们添加到脚本中,例如使用line:

export AWESTRUCT_ENVIRONMENT_VARIABLE=foobar

(注意:当你像任何程序一样运行脚本时,这不会改变父shell环境。)

答案 1 :(得分:0)

您还可以在运行脚本的用户的PATH中添加可执行文件的路径并获取错误。

您可以尝试以下方式:

$ su - <user_that_run_the_script>
$ echo "export PATH=$PATH:$(which awestruct)" >> ~/.bash_profile
$ source ~/.bash_profile

(对于Linux用户,使用〜/ .bashrc而不是〜/ .bash_profile)