技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

详解Linux 4种方法运行bash脚本以及使脚本可从任何目录执行

作者:admin    时间:2026-3-17 10:1:29    浏览:

Linux中你可以通过解释器调用bash脚本来运行它,而无需授予执行权限。只要你具有访问权限,就可以使用bashshsource来执行它,即使它是不可执行的。在本文中,将介绍如何使用bashshsource来启动脚本。

使用bash命令运行脚本

$ bash greetings.sh

解释代码

这通过显式调用bash来执行脚本,因此文件不需要执行权限。

使用sh运行脚本

$ sh greetings.sh

解释代码

这将使用系统的默认shell运行脚本。

使用source运行脚本

$ source greetings.sh

解释代码

source命令通常用于在当前shell中运行脚本,以便脚本所做的更改在完成后保持活动状态。在这里,它直接在正在进行的shell会话中运行greetings.sh中的命令,而不是启动一个新的子shell。

注意

当脚本必须修改你的活动shell环境时使用source,例如导出环境变量或创建函数或别名。对于不影响活动shell的备份、安装或打印输出等任务,使用bashsh就足够了。不影响活动shell会话的内容。

使用./前缀运行脚本

$ ./greetings.sh

注意

如果你没有使用chmod +x使脚本可执行,则此方法将失败。

从任何目录运行bash脚本

创建一个名为test的测试目录。

$ mkdir test

移动到该目录并尝试运行脚本。

$ cd test/ && ./greetings.sh

输出:

-bash:./ greetings.sh:No such file or directory

如果你尝试在脚本自己的目录外使用bashshsource./运行bash脚本,它将失败并显示“No such file or directory”消息。唯一的例外是当你提供脚本的绝对路径时,或者当脚本的文件夹添加到你的PATH环境变量时。

使脚本可从任何目录执行

要从Linux机器上的任何位置使用bash脚本,需要将其存储在系统的PATH变量中已经列出的文件夹中。当你输入命令时,你的shell会检查每个PATH目录。当脚本位于这些目录之一时,它就不再是一个只能在其原始文件夹中运行的文件,而是有效地成为一个全局命令,你可以从文件系统上的任何位置调用它。

在下面的步骤中,你将显示当前的PATH值,然后将bash脚本移动到/usr/local/bin/

显示你的PATH环境变量。

$ echo $PATH

输出:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

上面的输出是PATH中包含的文件夹集合,在这些位置上可执行的任何东西都可以从系统上的任何地方启动。

返回到你的主目录。

$ cd

把你的bash脚本移到/usr/local/bin

$ sudo mv greetings.sh /usr/local/bin/

脚本现在可以全局运行。

$ greetings.sh

解释:

目录/usr/local/bin用于用户添加的工具和脚本,并且已经是PATH的一部分,因此它不会与系统管理的软件冲突。因为它是一个系统文件夹,你需要sudo来移动文件到那里。一旦放入,机器上的任何用户都可以运行脚本。

你还可以将脚本放在~/.local/bin中,使其仅对你自己的帐户可用。此位置用于个人可执行文件,因此你可以在那里管理脚本,而无需使用sudo。在下面的步骤中,你将创建~/.local/bin,将你的脚本移动到其中,然后将该文件夹添加到你的PATH,以便只有你的用户可以全局运行它。

切换到主文件夹。

$ cd

创建~/.local/bin目录。

$ mkdir -p ~/.local/bin

将你的脚本移动到~/.local/bin

$ mv greetings.sh ~/.local/bin/

查看该文件夹是否已在你的PATH中。

$ echo $PATH | grep -o "$HOME/.local/bin"

如果你没有看到输出,那么~/.local/bin还不是你的PATH的一部分,你必须在shell配置中手动添加它。

~/.local/bin添加到shell配置文件中的~/.bashrc

$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

重新安装你的shell设置,以便立即应用更新。

$ source ~/.bashrc

验证~/.local/bin现在是否包含在PATH中。

$ echo $PATH | grep -o "$HOME/.local/bin"

从任何文件夹运行脚本,例如~/test2

$ mkdir -p ~/test2 && cd ~/test2 && greetings.sh

从路径目录中删除Bash脚本

如果你不再希望该脚本全局可用,则可以将其从你放置它的任何PATH目录中删除。在下面的步骤中,从 /usr/local/bin/~/.local/bin/ 中删除 greetings.sh。

/usr/local/bin/中删除它。

$ sudo rm /usr/local/bin/greetings.sh

~/.local/bin/中删除脚本。

$ rm ~/.local/bin/greetings.sh

因为此文件夹属于你的用户,所以你不需要sudo来删除该文件。

确认脚本不再全局可用,例如从~/test2开始。

$ greetings.sh

输出:

-bash: /home/linuxuser/.local/bin/greetings.sh: No such file or directory

此时,脚本只能使用./greetings.sh从你的主目录再次运行。

总结

在本文中,介绍了多种方式执行bash脚本,还了解了如何通过将脚本放在PATH文件夹中使脚本在系统范围内可用:/usr/local/bin/文件夹用于每个用户,或~/.local/bin/文件夹仅用于你的个人帐户。

标签: linux教程  
x