linux通过配置环境的方式实现 shell脚本可以在任意目录下执行

正常情况下 执行脚本必须要在脚本所在的目录下执行才行,比如说 xcall 脚本在 “/root/script” 目录 ,那么你执行xcall也 必须在”/root/script”目录下, 如果你不在”/root/script” 目录执行的话,会报:

  1. [root@zjj101 etc]# sh xcall jps
  2. sh: xcall: 没有那个文件或目录

解决思路是将脚本所在的文件夹配置到环境变量中 , “/root/script/“是我脚本所在的目录

修改 “/etc/profile” 文件 , 将 /root/script/ 目录加入到环境变量中,

命令:

  1. vi /etc/profile

profile文件内容:

  1. export PATH="$PATH:/root/script/"
  2. export PATH

更新下环境变量:

命令:

  1. source /etc/profile

测试结果

sh xcall hostname

[root@zjj101 etc]# sh xcall hostname
要执行的命令是hostname
---------------------zjj101-----------------
zjj101.localdomain
---------------------zjj102-----------------
zjj102.localdomain
---------------------zjj103-----------------
zjj103.localdomain
[root@zjj101 etc]#

换个目录依然能执行这个命令

[root@zjj101 etc]# cd /
[root@zjj101 /]# sh xcall hostname
要执行的命令是hostname
---------------------zjj101-----------------
zjj101.localdomain
---------------------zjj102-----------------
zjj102.localdomain
---------------------zjj103-----------------
zjj103.localdomain
[root@zjj101 /]#

其它说明

你也可以配置的时候直接执精确到脚本上 /root/script/xcall

export xcall=/root/script/xcall
export PATH="$PATH:/$xcall"
export PATH

执行

执行 sh $xcall hostname 也可以执行

# 执行命令
[root@zjj101 /]# sh $xcall hostname
要执行的命令是hostname
---------------------zjj101-----------------
zjj101.localdomain
---------------------zjj102-----------------
zjj102.localdomain
---------------------zjj103-----------------
zjj103.localdomain
[root@zjj101 /]#