问题描述:我正在使用一种叫做游戏框架在我的开发中需要我制作 python 脚本玩路径中可用。因此,我在在/usr/本地/bin...现在我已经编写了一个 shell 脚本(称之为状态文件) 调用此 python 脚本如下:play status <some values here related to my app> &> /tmp/xyz.txt
然后此 shell 脚本通过电子邮件将文件发送给我。当我按如下方式执行脚本时,此方法完美运行./script.sh
。但是,当每天将脚本作为 cron 表达式执行时,我会从 stderr 收到一条输出,提示“play:未找到命令”。
因此,我自己做了一些调查,以下是我的发现:
echo $PATH
当我在 shell 上时,显示我有在/usr/本地/bin因此我可以成功执行命令play status
- 然而当我输入
sudo bash
时,echo $PATH
我没有路径在/usr/本地/bin不再。它是一组有限的文件夹(其中之一是/usr/bin)。
问:为什么会出现这种情况?!我不明白为什么路径不同。另外,作为一种解决方法,您是否建议我这样做:
- 新的符号链接来自/usr/bin到在/usr/本地/bin(这有什么副作用?)
- 消除在/usr/本地/bin符号链接,只使用/usr/bin
- 在链接新程序并执行它们时是否存在我没有遵循的惯例
$PATH
?
谢谢。
答案1
所有用户(包括 root)都有一组环境变量,每次打开新 shell 时都会应用这些环境变量。
对于普通用户,您可以通过编辑 ~/.bashrc 并在最后添加以下行来添加到现有路径:
PATH=$PATH:/mypath_to_my_files
对于 root 来说,我认为你必须编辑 /root/.bashrc。不过在这种情况下,确保全部用户在他们的路径中有这个,为此,您可以使用上面的编辑行,并将其放在文件 /etc/bash.bashrc 的末尾
答案2
我建议您简单地将符号链接移动到 /usr/bin。