千家信息网

如何在 Linux 中运行一个 Shell 脚本

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"如何在 Linux 中运行一个 Shell 脚本"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2026年10月31日如何在 Linux 中运行一个 Shell 脚本

本篇内容介绍了"如何在 Linux 中运行一个 Shell 脚本"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 Linux 中有两种运行 shell 脚本的方法。你可以使用:

bash script.sh

或者,你可以像这样执行 shell 脚本:

./script.sh

这可能很简单,但没太多解释。不要担心,我将使用示例来进行必要的解释,以便你能理解为什么在运行一个 shell 脚本时要使用给定的特定语法格式。

我将使用这一行 shell 脚本来使需要解释的事情变地尽可能简单:

abhishek@itsfoss:~/Scripts$ cat hello.sh echo "Hello World!"

方法 1:通过将文件作为参数传递给 shell 以运行 shell 脚本

第一种方法涉及将脚本文件的名称作为参数传递给 shell 。

考虑到 bash 是默认 shell,你可以像这样运行一个脚本:

bash hello.sh

你知道这种方法的优点吗?你的脚本不需要执行权限。对于简单的任务非常方便快速。

在 Linux 中运行一个 Shell 脚本

如果你还不熟悉,我建议你 阅读我的 Linux 文件权限详细指南 。

记住,将其作为参数传递的需要是一个 shell 脚本。一个 shell 脚本是由命令组成的。如果你使用一个普通的文本文件,它将会抱怨错误的命令。

运行一个文本文件为脚本

在这种方法中,你要明确地具体指定你想使用 bash 作为脚本的解释器 。

shell 只是一个程序,并且 bash 只是 Shell 的一种实现。还有其它的 shell 程序,像 ksh 、zsh 等等。如果你安装有其它的 shell ,你也可以使用它们来代替 bash 。

例如,我已安装了 zsh ,并使用它来运行相同的脚本:

使用 Zsh 来执行 Shell 脚本

方法 2:通过具体指定 shell 脚本的路径来执行脚本

另外一种运行一个 shell 脚本的方法是通过提供它的路径。但是要这样做之前,你的文件必须是可执行的。否则,当你尝试执行脚本时,你将会得到 "权限被拒绝" 的错误。

因此,你首先需要确保你的脚本有可执行权限。你可以 使用 chmod 命令 来给予你自己脚本的这种权限,像这样:

chmod u+x script.sh

使你的脚本是可执行之后,你只需输入文件的名称及其绝对路径或相对路径。大多数情况下,你都在同一个目录中,因此你可以像这样使用它:

./script.sh

如果你与你的脚本不在同一个目录中,你可以具体指定脚本的绝对路径或相对路径:

在其它的目录中运行 Shell 脚本

在脚本前的这个 ./ 是非常重要的(当你与脚本在同一个目录中)。

为什么当你在同一个目录下,却不能使用脚本名称?这是因为你的 Linux 系统会在 PATH 环境变量中指定的几个目录中查找可执行的文件来运行。

这里是我的系统的 PATH 环境变量的值:

abhishek@itsfoss:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

这意味着在下面目录中具有可执行权限的任意文件都可以在系统的任何位置运行:

  • /home/abhishek/.local/bin

  • /usr/local/sbin

  • /usr/local/bin

  • /usr/sbin

  • /usr/bin

  • /sbin

  • /bin

  • /usr/games

  • /usr/local/games

  • /snap/bin

Linux 命令(像 ls、cat 等)的二进制文件或可执行文件都位于这些目录中的其中一个。这就是为什么你可以在你系统的任何位置通过使用命令的名称来运作这些命令的原因。看看,ls 命令就是位于 /usr/bin 目录中。

当你使用脚本而不具体指定其绝对路径或相对路径时,系统将不能在 PATH 环境变量中找到提及的脚本。

为什么大多数 shell 脚本在其头部包含 #! /bin/bash ?

记得我提过 shell 只是一个程序,并且有 shell 程序的不同实现。

当你使用 #! /bin/bash 时,你是具体指定 bash 作为解释器来运行脚本。如果你不这样做,并且以 ./script.sh 的方式运行一个脚本,它通常会在你正在运行的 shell 中运行。

有问题吗?可能会有。看看,大多数的 shell 语法是大多数种类的 shell 中通用的,但是有一些语法可能会有所不同。

例如,在 bash 和 zsh 中数组的行为是不同的。在 zsh 中,数组索引是从 1 开始的,而不是从 0 开始。


Bash Vs Zsh

使用 #! /bin/bash 来标识该脚本是 bash 脚本,并且应该使用 bash 作为脚本的解释器来运行,而不受在系统上正在使用的 shell 的影响。如果你使用 zsh 的特殊语法,你可以通过在脚本的第一行添加 #! /bin/zsh 的方式来标识其是 zsh 脚本。

在 #! 和 /bin/bash 之间的空格是没有影响的。你也可以使用 #!/bin/bash 。

"如何在 Linux 中运行一个 Shell 脚本"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

脚本 运行 文件 目录 路径 命令 方法 权限 系统 解释 名称 程序 语法 不同 参数 变量 只是 环境 解释器 一行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 百单网互联网科技有限公司怎么样 云之行互联网科技 深圳恒合互联网络科技有限公司 合肥互联网科技公司 广州互联网络科技有限公司 互联网科技ppt模板 广西互联网科技公司 撒么互联网科技公司 温州喔噻互联网科技有限公司 互联网为啥属于高科技 互联网金融科技展 元气玛特互联网科技公司是外包吗 南京一网一红互联网科技有限公司 上海同邻互联网科技有限公司规模 广西科技产业互联网是什么 科技互联网经济论坛 互联网领先科技成果宣传视频 互联网科技自媒体灵感 武汉亿视互联网科技有限公司 广州互联网络科技有限公司 广州优美互联网科技 阿里巴巴算科技企业还是互联网 福建科技产业互联网发展 长沙茂晟互联网科技有限公司 互联网企业科技类企业如何做账 互联网领先科技宣传片 易租星互联网科技有限公司 数字科技和互联网金融哪个好 杭州科技互联网公司有哪些
0