文章插图
在 Linux 中有两种运行 shell 脚本的方法 。你可以使用:
bash script.sh
或者,你可以像这样执行 shell 脚本:
./script.sh
这可能很简单,但没太多解释 。不要担心,我将使用示例来进行必要的解释,以便你能理解为什么在运行一个 shell 脚本时要使用给定的特定语法格式 。
我将使用这一行 shell 脚本来使需要解释的事情变地尽可能简单:
abhishek@itsfoss:~/Scripts$ cat hello.shecho \"Hello World!\"
方法 1:通过将文件作为参数传递给 shell 以运行 shell 脚本
第一种方法涉及将脚本文件的名称作为参数传递给 shell。
考虑到 bash 是默认 shell,你可以像这样运行一个脚本:
bash hello.sh
你知道这种方法的优点吗?你的脚本不需要执行权限 。对于简单的任务非常方便快速 。
文章插图
如果你还不熟悉,我建议你。
记住,将其作为参数传递的需要是一个 shell 脚本 。一个 shell 脚本是由命令组成的 。如果你使用一个普通的文本文件,它将会抱怨错误的命令 。
文章插图
在这种方法中,你要明确地具体指定你想使用 bash 作为脚本的解释器 。
shell 只是一个程序,并且 bash 只是 Shell 的一种实现 。还有其它的 shell 程序,像 ksh 、zsh 等等 。如果你安装有其它的 shell ,你也可以使用它们来代替 bash。
例如,我已安装了 zsh ,并使用它来运行相同的脚本:
文章插图
方法 2:通过具体指定 shell 脚本的路径来执行脚本
另外一种运行一个 shell 脚本的方法是通过提供它的路径 。但是要这样做之前,你的文件必须是可执行的 。否则,当你尝试执行脚本时,你将会得到 “权限被拒绝” 的错误 。
因此,你首先需要确保你的脚本有可执行权限 。你可以 使用 chmod 命令来给予你自己脚本的这种权限,像这样:
chmod u+x script.sh
使你的脚本是可执行之后,你只需输入文件的名称及其绝对路径或相对路径 。大多数情况下,你都在同一个目录中,因此你可以像这样使用它:
./script.sh
如果你与你的脚本不在同一个目录中,你可以具体指定脚本的绝对路径或相对路径:
文章插图
在脚本前的这个
./
是非常重要的(当你与脚本在同一个目录中) 。文章插图
为什么当你在同一个目录下,却不能使用脚本名称?这是因为你的 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
ls
、cat
等)的二进制文件或可执行文件都位于这些目录中的其中一个 。这就是为什么你可以在你系统的任何位置通过使用命令的名称来运作这些命令的原因 。看看,ls
命令就是位于/usr/bin
目录中 。文章插图
当你使用脚本而不具体指定其绝对路径或相对路径时,系统将不能在
PATH
环境变量中找到提及的脚本 。为什么大多数 shell 脚本在其头部包含 #! /bin/bash ?
记得我提过 shell 只是一个程序,并且有 shell 程序的不同实现 。
当你使用
#! /bin/bash
时,你是具体指定 bash 作为解释器来运行脚本 。如果你不这样做,并且以./script.sh
- 如何选购小直手电筒电 如何挑选好的手电筒
- word设置上下标快捷键 word中怎么设置上下标
- word同时输入上下标的方法 word中的上标和下标怎么输入
- 如何解决iPhone充电出现警告的问题 苹果充电口检测到液体充不了电
- iPhone截长图的操作方式 苹果手机如何滚动截屏
- 华为手机息屏显示时间方法 华为如何在息屏的情况下显示时间
- Mac录制屏幕视频的方法 苹果电脑如何录屏
- 华为手机云备份怎么删除旧备份 华为手机如何彻底删除云备份
- 微信设置加朋友的隐私权限 微信如何添加设置隐私的好友
- 中秋节给领导客户送什么月饼好可以提前几天送