如何执行 bash 脚本?

如何执行 bash 脚本?

因此我编写了我的第一个 bash 脚本:

#!/bin/bash
echo 'hello world!'
exit

我知道它具有正确的 bash 位置并且可以执行:

$ which bash
/bin/bash
$ chmod +x myscript.sh

现在我想从命令行运行它,但出现错误:

$ myscript.sh
myscript.sh: command not found

因此我尝试了这个并且它有效:

$ bash myscript.sh
hello world!

我是不是总是需要这样执行它?我觉得我执行过其他脚本,而不必在它前面加上bash。我怎样才能运行 myscript.sh 而不必在它前面加上bash

更新:这是很好的解释为何以及如何执行 bash 脚本

答案1

您必须使文件可执行。您可以使用

chmod +x <filename>

其中是您的脚本的名称,然后您必须在其前面添加以./指示 shell 运行本地目录中的文件,例如:

./script.sh

您只能运行位于 中的文件PATH或您指定了路径的文件。默认情况下./,本地目录不位于 中,PATH因为有人可能会将其用于恶意目的。想象一下,一个名为 的脚本ls被放在一个目录中,您进入该目录,运行该脚本ls,然后该脚本会做一些坏事。

当你这样做时,你可能希望通过运行 shell 而不是 bash 来使其更具可移植性,方法是使用:

#!/bin/sh

或者通过运行 bash 不管它安装在哪里只要它被安装了:

#!/usr/bin/env bash

答案2

除了费尔南德斯的建议外,还要加上一点,例如:

./myscript.sh

出于安全原因,当前目录永远不会包含在执行路径中。

答案3

有 3 种方法可以执行 bash 脚本。以 myscript.sh 作为要执行的脚本为例。

方法 1

将脚本作为子进程执行,如果没有写入所有者,则将触发权限问题。您可以通过 chmod 更改权限。

$ chmod + x myscript.sh

$ ./myscript.sh

方法 2

以当前用户身份运行该脚本。如果 bash 脚本写得好,它就不会有错误。

$ bash myscript.sh

方法 3

与方法 2 类似,但是一种捷径。请注意,这是基于您在当前会话中使用 bash shell 的假设。

$。我的脚本

希望这可以帮助!:)

相关内容