19、PATH环境变量、命令补全、家目录中的./bashrc、./bash_profile、./bash_history、./bash_logout的含义

1、在Linux中,输入命令的时候,我们可以输入一半按Tab进行命令补全

 

2、但问题是,为何按Tab键就能进行命令补全呢?这里涉及到$PATH环境变量

 

3、什么是$PATH环境变量

$PATH是一个环境变量,它定义了系统中可执行文件的搜索路径;
所以每当我们在输入命令按Tab键补全的时候,Bash就会根据$PATH中定义的目录依次搜索可执行文件

4、查看$PATH目录

echo $PATH


命令输出结果如下:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


这上面的的路径使用:进行分割,依次展开就是
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin



当我们想要输入cat命令的时候,我们在终端上只输入ca然后按Tab键进行补全;
当按Tab那一刻,bash就会根据$PATH定义的目录依次从头开始找是否有cat这个可执行文件;
所以先从/usr/local/sbin找,如果第一个没找到,就去第二个/usr/local/bin找;
一直到最后一个,如果到最后一个也没有,那么按Tab键也没用,不会进行任何显示

这就是为何按Tab能够补全命令的原因

如果我们后续安装了一些管理类的命令,也想直接在全局路径下去使用,可以将这些工具的可执行目录追加到$PATH路径中,这样我们在任意位置按Tab键也可以进行自动补全,下面是如何设置的步骤

 

5、只对当前shell会话生效

以nginx命令为例,假设nginx的可执行文件的路径是/usr/local/nginx/sbin;
我们想在系统的任意位置都想要使用/usr/local/nginx/sbin下的命令,可以这样做



1、修改$PATH的环境变量,这里的修改其实是直接修改PATH变量的值

PATH=$PATH:/usr/local/nginx/sbin  
注意:仅修改PATH的值只会对当前shell有效,但是子进程无法使用



2、让当前shell以及子进程都看能使用,使用export
export PATH=$PATH:/usr/local/nginx/sbin  将环境变量导出,使得当前shell以及子进程都生效


但!!!无论是直接使用PATH还是使用export PATH,都仅仅是对当前shell会话有效;
如果我们退出当前终端或者重新开一个终端,nginx这个路径依旧还是用不了
所以这部分只会对当前是shell进程有效

6、仅对某一个用户生效

在每一个用户的家目录中,都有4个隐藏文件

以root家目录为例,ls -a /root/

可以看到有下面4个文件:

.bash_history    记录该用户的命令历史

.bash_logout     在用户退出shell会话的时候执行什么命令,比如说某些重要的用户在操作完服务器之后,我们想要把刚刚操作的命令给删掉,那么就可以在这个文件下输入history -c来自动清除

.bash_profile    配置加载该用户环境变量,一般是用户当前这个用户,而对于其他用户而言是没办法用的,属于一次性初始化设置

.bashrc          用户配置当前用户下设置的命令别名,提示符(这里的提示符指的是终端的样式,比如普通用户的符号是$,我们可以改成喜欢的格式,比如可以显示时间,或者显示前面的路径,等等) 


所以,我们可以编辑对应用户家目录下的.bash_profile文件
在该文件你认为比较合适的地方将PATH添加进去即可,再添加的时候我们建议使用export让当前用户的shell以及子进程都能够使用到该环境变量,因此添加如下命令即可
export PATH=$PATH:/usr/local/nginx/sbin


添加完成后可以立即刷新生效
source ~.bash_profile

也可以退出当前终端重新进入即可

7、对所有用户都生效

/etc/profile是系统范围的配置文件;
所有用户在登陆操作系统的时候都会读取它
因此,在这个文件下配置环境变量适用于所有用户;
因此,我们可以把一些常用的命令放到该配置文件中来全局使用


/etc/profile.d/目录的作用是方便管理员细分配置;
并且通过不同的文件名来单独管理环境变量;
这样做方便后期维护
比如在该目录下创建一个nginx.sh里面只写nginx的环境变量
比如在创建一个mysql.sh,里面只写mysql的执行文件路径
这样做的目的是简化和方便管理,一个文件管理一个,所以当用户登录到系统的时候
/etc/profile不但会加载自己文件中的环境变量
还会把/etc/profile.d目录下的shell脚本也一并加载

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值