我有一个 Debian Lenny 服务器,我希望用户在其 PATH 中www-data
拥有它/usr/local/zend/bin
,这样它就可以在 cron 中执行脚本www-data
。
我如何添加/usr/local/zend/bin
到 PATH,以便www-data
可以执行文件/usr/local/zend/bin
?
答案1
设置 PATH 的第一个位置是/etc/login.defs
。有一个针对 root 的设置和一个针对其他用户的设置。
另一个可以定义环境变量的地方是/etc/environment
。这些设置将适用于所有人(您不能在那里编写任意的 shell 代码)。
第三个可以定义环境变量的地方是/etc/profile
。在那里,您可以编写任意的 shell 代码。如果您想要特定于用户的设置,则有相应的每个用户文件~www-data/.profile
。但这仅适用于控制台交互式登录;特别是,它不适用于 cron 作业,除非它们明确地提供源/etc/profile
。
如果您只需要PATH
在用户 crontab 中进行该设置,则可以将其写在 crontab 的开头。请注意,您需要完整列表 ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin
),不能使用变量替换(PATH=$PATH:/usr/local/zend/bin
在那里不起作用)。
答案2
要为除 root 之外的所有用户设置路径,请编辑/etc/profile
或/etc/enviroment
。对于 root 或个人用户,请分别在其主目录中编辑.bashrc
或.bash_profile
。添加PATH=$PATH:/new/location/
。
答案3
为了简单地为所有用户设置 var 而不给您带来负担profile
,您可以在目录中添加您自己的小脚本,/etc/profile.d
如下所示:
echo 'PATH="/usr/local/zend/bin:$PATH"' > /etc/profile.d/zend_path.sh
然后重新登录。