【问题标题】:Why does this sh shebang not work?为什么这个 sh shebang 不起作用?
【发布时间】:2013-05-24 12:46:15
【问题描述】:

在以下脚本中(另存为script.sh):

#!/bin/sh
cd $MY_PYTHON_WORKING_DIRECTORY
python script1.py
python script2.py

然后,当我尝试在我的 bash shell 中运行命令 script.sh 时,我收到了错误 bash: script.sh: command not found。为什么这不能按预期工作?如果任何脚本的第一行以#! 前缀开头,那么该行的以下路径将被解释为命令,对吗?供您参考,即使我将第一行更改为#!/bin/bash,仍然会发生相同的错误。如果我以sh script.shbash script.sh 运行脚本,那么脚本会按预期运行。

有什么方法可以通过点击script.sh 来运行脚本吗?

还有一个问题,在shbash 之间,我应该使用哪个?我在 OS X 10.8 上,我的默认 shell 当前设置为 bash,但我想知道以后要使用哪一个。

谢谢。

【问题讨论】:

  • 您可以使用./script.sh 执行它。它将检查第一行以了解哪个二进制文件将执行它,在本例中为/bin/sh
  • 脚本很可能不在 $PATH 中的目录中。
  • 执行时出现权限错误。然后尝试用sudo 运行它,它仍然没有工作,因为sudo 本身被解释为一个命令。所以我更改了权限以便在没有sudo 的情况下执行它,然后脚本就可以工作了。但是当我想在不指定任何命令的情况下执行某些文件时,是否必须更改权限?

标签: bash sh shebang


【解决方案1】:

首先,使脚本可执行:

chmod u+x script.sh

其次,您的当前目录不在您的 $PATH 中。因此,您必须使用路径运行脚本(相对就足够了):

./script.sh

【讨论】:

    猜你喜欢
    • 2013-07-01
    • 2016-01-04
    • 2019-04-06
    • 1970-01-01
    • 2011-04-06
    • 2013-03-10
    • 1970-01-01
    • 2014-01-01
    相关资源
    最近更新 更多