我正在尝试编写一个脚本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 ...
答案 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)