0

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

我的脚本是 myscript.sh :

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

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

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

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

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

awestruct: command not found

问题是路径...

4

2 回答 2

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

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

于 2013-10-27T11:36:52.767 回答
0

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

你可以尝试类似的东西:

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

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

于 2013-10-27T13:14:28.797 回答