执行bash文件时出错

时间:2010-04-01 09:04:02

标签: php bash shell

我在那儿!

我在学习组合.sh文件和PHP时遇到了一些问题。我创建了一个文件test.sh,在该文件中我调用了一个名为test.php的PHP文件。

如果我双击.sh文件然后它运行完美但当我尝试从终端运行它时,我得到“命令未找到”。我在我的.sh文件中的确切文件夹,但它不会工作。这是我的test.sh:

#!/bin/bash
LIB=${0/%cli/}
exec php -q ${LIB}test.php one two three
exit; 

当我双击test.sh文件时,它会像它支持的那样返回argv数组。但为什么我不能从终端运行它?

5 个答案:

答案 0 :(得分:6)

使用./filename.sh

无论你是否在同一个文件夹中,没有给出./系统正在搜索路径变量。 (/ bin /,/ usr / bin等)

答案 1 :(得分:1)

是否启用了执行位?

chmod +x test.sh

答案 2 :(得分:0)

从终端启动以及通过双击启动时,您的环境可能会有所不同。尝试从终端执行which phpecho $PATH以查看交易是什么。

编辑1
正如其他人所说,如果你的“命令未找到”指的是shell脚本而不是php,那么你可能忘记在脚本名称之前加上“./”(即./test.sh)。另外,不要忘记通过调用chmod a+x test.sh使其可执行。原因是PATH不包含当前目录(即“。”),因为这样做会带来安全风险(例如,文件夹中包含大量文件,包括假的“ssh”,然后可能会拦截您的密码等等。)

编辑2
此外,我不了解您,但${0/%cli/}正在我的终端内评估-bash。你确定这是你希望它扩展到什么?也许您应该指定确切的文件名。

答案 3 :(得分:0)

您的$ PATH变量可能不包含'。' - 所以shell可能无法找到要运行的命令。

正如其他人所说,sh ./file.sh会起作用......

答案 4 :(得分:0)

另一个选择是用sh运行它(或者bash,如果你的机器上的sh不是bash而脚本使用bashims)

sh filename.sh
bash filename.sh

无论文件是可执行文件还是$ PATH

,这都可以