我遇到了一个奇怪的问题。php
在特定情况下找不到该命令。
我尝试以三种不同的方式调用该命令。其中只有一种失败:
作为用户,
john
我创建了一个调用的简单脚本php --version
。然后以用户身份root
像这样调用该脚本:sudo -u john ./script.sh
这样php
就找不到命令了。我
root
直接像这样调用该命令:sudo -u john php --version
这里没有问题,该命令确实存在。我直接以用户“john”的身份调用该脚本:
./script.sh
它也运行良好。
是什么原因造成的?
这个问题不仅发生在其他用户身上john
,也发生在这台特定的机器上。
操作系统是 CentOS 5.9。
编辑:此外,其他命令(例如gcc
、perl
或 )python
不会出现此问题。php
到目前为止,我发现只有 该命令存在此问题。
答案1
- 你的测试脚本缺少舍邦线。没有汤给你。
- 脚本调用的子 shell 未使用
PATH
与交互式 shell 相同的变量。键入echo $PATH
以查看当前路径变量,并PATH
在脚本中设置此变量。
至于为什么PATH
两者之间的变量不一致:
- 由于您没有指定 shebang 行,因此您无法确保所调用的 shell 与交互式 shell 相同。它可能获取完全不同的配置文件。
- 根据 shell 的执行方式,获取的配置文件也不同。您位于交互式 shell 中,而您的脚本是非交互式 shell。假设您正在尝试使用
bash
,请查阅man bash
并开始阅读INVOCATION
文件顶部附近的部分。