2013-10-27 50 views
0

我想写一个脚本外壳(Mac OS X)用于在启动代理中部署我的Awestruct网站。 所以,我必须在部署之前生成网站。生成网站的命令是: awestruct -g脚本外壳来自动部署网站

我的脚本是myscript.sh:

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

此脚本由系统在事件发生时启动。

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

我awestruct节目是我的红宝石安装的一部分,并添加到我的PATH变量。

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

awestruct: command not found 

问题是PATH ...

回答

1

如果它工作手动,然后在相同的提示符,它的工作原理,运行命令:

which awestruct 

这将打印具有完整路径的程序文件,让我们假设/usr/local/bin/awestruct,但使用它确实是。然后使用你的脚本,例如:

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

这假定没有其他的环境变量,只为您的帐户,该帐户awestruct需求定义。如果有,然后找出它们是什么,并与线运行awestruct之前将它们添加到您的脚本,例如:

export AWESTRUCT_ENVIRONMENT_VARIABLE=foobar 

(注意:当您正常运行脚本像任何计划,不会改变父外壳环境)。

0

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

你可以尝试这样的:

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

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