脚本文件位置
设置权限后,我们现在可以执行我们的脚本:
[我@linuxbox ~]$ 。/你好,世界
你好,世界!
[我@linuxbox ~]$ 。/你好,世界
你好,世界!
为了让脚本运行,我们必须在脚本名称之前使用显式路径。 如果我们不这样做,我们会得到这个:
[我@linuxbox ~]$ 你好,世界
bash: hello_world: 命令未找到
[我@linuxbox ~]$ 你好,世界
bash: hello_world: 命令未找到
为什么是这样? 是什么让我们的脚本与其他程序不同? 事实证明,什么都没有。 我们的脚本很好。 它的位置是问题所在。 回到第 11 章,我们讨论了 PATH 环境变量及其对系统如何搜索可执行程序的影响。 回顾一下,如果没有指定明确的路径,系统每次需要查找可执行程序时都会搜索目录列表。 这就是系统知道执行的方式
/bin/ls 当我们在命令行输入 ls 时。 /bin 目录是系统自动搜索的目录之一。 目录列表保存在名为 PATH 的环境变量中。 PATH 变量包含要搜索的以冒号分隔的目录列表。 我们可以查看PATH的内容:
脚本文件位置
[我@linuxbox ~]$ 回声 $ 路径
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/游戏
[我@linuxbox ~]$ 回声 $ 路径
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/游戏
在这里,我们看到了我们的目录列表。 如果我们的脚本位于列表中的任何目录中,我们的问题就会得到解决。 注意列表中的第一个目录,
/家/我/斌。 大多数 Linux 发行版将 PATH 变量配置为在用户的主目录中包含一个 bin 目录,以允许用户执行他们自己的程序。 因此,如果我们创建 bin 目录并将我们的脚本放在其中,它应该像其他程序一样开始工作:
[我@linuxbox ~]$ 目录 [我@linuxbox ~]$ mv hello_world 宾 [我@linuxbox ~]$ 你好,世界
你好,世界!
[我@linuxbox ~]$ 目录 [我@linuxbox ~]$ mv hello_world 宾 [我@linuxbox ~]$ 你好,世界
你好,世界!
确实如此。
如果 PATH 变量不包含目录,我们可以通过在我们的 的.bashrc 文件:
导出路径=~/bin:"$PATH"
导出路径=~/bin:"$PATH"
进行此更改后,它将在每个新的终端会话中生效。 要将更改应用到当前终端会话,我们必须让 shell 重新读取 的.bashrc 文件。 这可以通过“采购”它来完成:
[我@linuxbox ~]$ . .bashrc文件
[我@linuxbox ~]$ . .bashrc文件
点 (.) 命令是 资源 命令,一个 shell 内置命令,它读取特定的 shell 命令文件并将其视为来自键盘的输入。
注意:Ubuntu(和大多数其他基于 Debian 的发行版)会自动添加
如果 ~/bin 目录在用户的 .bashrc 文件执行时存在,则将 ~/bin 目录添加到 PATH 变量。 因此,在 Ubuntu 系统上,如果我们创建 ~/bin 目录,然后注销并重新登录,则一切正常。