一般情况下,我们在 Linux 系统里写完一个脚本,想要运行它的话,就需要切换到这个脚本所在的目录,然后再用 ./myScript.sh
这样的方式执行它。或者我们使用这个脚本的完整路径执行也行。
但是,对于一些 Linux 命令,比如 ls
、cd
、pwd
等命令,它们的可执行文件是放在 /bin
或 /usr/bin
目录下,而我们要运行这些命令,无需切换到这两个目录下,在任意一个位置都可以运行,这是怎么做到的呢?
这是因为这些命令所对应的可执行文件所在的目录已经被加到了 PATH
环境变量里。所以,我们也可以把我们所写的脚本目录路径加到 PATH
环境变量里,这样我们也可以实现像那些系统命令一样在系统任意位置都可以执行自己写的脚本了。
本文介绍三种方法来实现这个目的。
方法1:将脚本所在路径添加到 .bashrc
文件里
大家知道,当你的终端被运行之后,系统将自动加载 .bashrc
文件,所以我们可以把脚本路径添加到 PATH
这个动作写在 .bashrc
文件,这样终端一起来我们就自动改好了 PATH
变量。
假如,我们所写的脚本位于 /home/alvin/scripts
目录下,名称是 hello.sh
,程序很简单,执行的结果就是打印一句 hello world
。
接下来,我们使用文本编辑工具,在 .bashrc
文件的末尾追加下面这句代码:
export PATH="/home/alvin/scripts:$PATH"
最后,再使用 source
命令使我们的修改生效:
$ source ~/.bashrc
现在,我们就可以在系统的任意位置执行我们的脚本啦~
方法2:将脚本所在路径添加到 .profile
文件里
.profile
文件是一个环境变量配置文件,当用户登录到系统的时候,系统将自动加载这个文件并配置环境变量。所以,我们也可以采用类似方法 1 的方式来修改这个文件,达到我们的目的。
首先,我们使用文本编辑工具在 .proflie
文件末尾追加下面这句代码:
export PATH="$PATH:$HOME/scripts"
但是,这时候修改还未生效。我们需要退出当然用户的登录,再重新登录,这样我们的修改就会生效了。
但是,如果你使用的是 Ubuntu 系统或它的衍生发行版,那么就需要修改 .pam_environment
文件,而不是 .profile
文件。类似的,也是在这个文件末尾加入这么一句代码:
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/scripts
保存退出之后,我们重新登录当前用户使修改生效。
现在,我们就可以在系统的任意位置执行我们的脚本啦~
方法3:将脚本所在路径添加到环境变量里
前面两种方法都是通过间接的方法去修改环境变量,那么,我们就不能直接修改环境变量文件呢?答案是肯定的,这个文件位于 /etc
目录下,文件名是 environment
。我们先使用 vim
打开这个文件。
$ sudo vim /etc/environment
然后再打开 PATH
变量的定义值:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin"
我们在这个值后面追加上我们的脚本路径即可。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/alvin/scripts"
跟前面两种方法一样,我们依然需要退出当前用户再重新登录,然后就可以实现我们的目的了。