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


8

我在OSX Snow Leopard上。

这是以下内容的全部内容grr.sh

#!/bin/sh

echo wow

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

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

好的。很公平。我将授予它可执行权限,然后重试:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

嗯 如果我显式使用bash可能会起作用?我将文件内容更改为:

#!/bin/bash

echo wow

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

最后一件事!万一你好奇...

$ which sh
/bin/sh

Answers:


19

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


3
+1。还要注意的,默认情况下,当前目录位于Windows系统上的路径上,并且具有最高优先级。这种至关重要的差异可能是询问者困惑的根源。
afrazier 2011年

你是第一个9秒!谢谢!
关闭牛仔

您保存了我的
Macbook

7

grr.sh的位置在$PATH变量中吗?如果不是,则需要输入:

./grr.sh

如果与grr.sh在同一文件夹中。如果没有,请提供完整路径。


6

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

  $ chmod 777 file.sh
  $ ./file.sh

0

是的,。/ grr.sh的意思是,在此目录中,运行命令grr.sh。单身。表示在工作目录中。否则,您的外壳会假定您正在尝试在$ PATH中运行命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.