【问题标题】:shebang not working to run bash scripts in linuxshebang 无法在 linux 中运行 bash 脚本
【发布时间】:2018-06-05 14:08:21
【问题描述】:

我似乎无法通过 shebang 将 bash 脚本转换为可执行文件。我的代码看起来像

#!/bin/bash
echo "hello"

这是在一个名为 test.sh 的文件中。我正在尝试使用命令运行它

./test.sh

在命令行中,但我只收到 permission denied 的错误。当我将其更改为

sudo ./test.sh

我刚刚找回了那个找不到命令。我可以通过命令行命令将文件转换为可执行文件:

chmod +x test.sh

并且代码正确输出

hello

我已经尝试了命令

which bash

它返回了目录 /bin/bash 并且我也在我的 .bashrc 中导出了这个路径,但无济于事。任何想法将不胜感激谢谢!为了清楚起见,我正在运行 Linux mint。

【问题讨论】:

  • 你是在命令行输入“./test.sh”还是别的?你得到什么信息?
  • 那还有什么需要解决的?
  • 没有。你需要有执行权限才能执行。
  • shebang 只是告诉执行者使用什么 shell 或其他程序(perl 等)来读取命令。
  • 你做到了。 #!/bin/bash 表示使用 bash。 chmod +x 表示让您将文件作为命令执行。

标签: linux bash shebang


【解决方案1】:
chmod +x test.sh

设置可执行位正是我们所需要的。脚本需要 shebang 行 可执行权限才能运行。否则,您必须使用 bash test.sh 显式调用 shell。可执行位允许您编写./test.sh

【讨论】:

  • 脚本可以在没有 shebang 的情况下工作,但如果我执行 chmod + test.sh。那么shebang的目的是什么?
  • 如果 shebang 是 #!/bin/bash 并且您的解释器是 bash,那么这是多余的。但是,如果 shebang 是“#!/usr/bin/env python”并且脚本是用 python 编写的,或者如果脚本在 bash 以外的 shell 中运行(我认为很少见),那么会有很大的不同。
猜你喜欢
  • 1970-01-01
  • 2011-11-08
  • 2012-09-14
  • 2013-01-12
  • 2023-03-14
  • 2017-09-24
  • 2011-08-10
  • 2017-12-11
  • 1970-01-01
相关资源
最近更新 更多