运行 shell 脚本时“找不到命令”。我打破了什么?

Clo*_*boy 8 terminal bash macos

我在 OSX Snow Leopard 上。

以下是全文grr.sh

#!/bin/sh

echo wow
Run Code Online (Sandbox Code Playgroud)

当我尝试从终端运行它时:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow
Run Code Online (Sandbox Code Playgroud)

好的。很公平。我会给它可执行权限,然后再试一次:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found
Run Code Online (Sandbox Code Playgroud)

嗯。如果我明确使用 bash,也许它会起作用?我将文件的内容更改为:

#!/bin/bash

echo wow
Run Code Online (Sandbox Code Playgroud)

我得到了完全相同的结果。我能打破什么?!

最后一件事!如果你很好奇...

$ which sh
/bin/sh
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 19

绝对没有。只有在其中一个目录中的可执行文件$PATH可以直接运行,并且.(通常)永远不会在$PATH. 指定可执行文件的路径,即./grr.sh.

  • +1。还需要注意的是,当前目录 * 位于 Windows 系统上的默认路径上,并且具有最高优先级。这种至关重要的差异可能是提问者困惑的根源。 (3认同)

Cam*_*son 8

grr.sh 在$PATH变量中的位置?如果没有,您需要输入:

./grr.sh
Run Code Online (Sandbox Code Playgroud)

如果您与 grr.sh 位于同一文件夹中。如果没有,请提供它的完整路径。


小智 8

文件的权限是错误的。尝试以下命令:

  $ chmod 777 file.sh
  $ ./file.sh
Run Code Online (Sandbox Code Playgroud)