Linux 环境变量_006

 

 

  ***Linux 环境变量指系统运行程序或命令的能快速找到其位置等其它功能,不用输入复杂命令。以$PATH环境变量为例子,

$PATH决定了shell指定寻找命令或程序的路径,比较执行ls命令,如果没有$PATH环境变量,执行ls命令需要绝对路径执行/bin/ls,

如果设置了$PATH环境变量,只要执行ls命令就会自动执行。

 

  ***Linux环境变量分单一用户环境变量和系统全局用户环境变量,单一用户环境变量配置文件在用户家目录.bash_profile

修改此配置文件只对当前用户生效,其它用户不会生效;系统全局用户环境变量是针对所有Linux的用户都生效,配置文件在/etc/profile

 

 

 

Linux 两种办法修改环境变量:(以$PATH环境变量为例)

 

准备测试文本:

[root@oldboy ~]# echo $PATH       ##默认$PATH环境变量

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldboy ~]# ls -l /tmp/test.sh   ##创建一个测试文本

-rwxr-xr-x 1 root root 20 Nov 28 14:00 /tmp/test.sh

[root@oldboy ~]# chmod +x test.sh   ##赋予文本可执行权限

[root@oldboy ~]# /tmp/test.sh       ##测试文本运行显示

You set OK!

 

 

 

一、设置临时生效的环境变量,当用户退出登录或重启系统环境变量就恢复默认值

 

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oldboy/bin

[oldboy@oldboy ~]$ export PATH=$PATH:/tmp

[oldboy@oldboy ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oldboy/bin:/tmp

[oldboy@oldboy ~]$ test.sh

You set OK!

[oldboy@oldboy ~]$ su - root

Password:

[root@oldboy ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldboy ~]# test.sh

-bash: test.sh: command not found

 

 

 

二、 设置永久生效的环境变量

 

1、针对单一用户设置的环境变量

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oldboy/bin

[oldboy@oldboy ~]$ vim .bash_profile

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

       . ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=$PATH:$HOME/bin:/tmp

 

export PATH

[oldboy@oldboy ~]$ source .bash_profile

[oldboy@oldboy ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oldboy/bin:/home/oldboy/bin:/tmp

[oldboy@oldboy ~]$ test.sh

You set OK!

 

 

2、针对系统全局用户设置的环境变量

[oldboy@oldboy ~]$ ls -l /etc/profile

-rw-r--r-- 1 root root 1820 Nov 27 16:35 /etc/profile

[root@oldboy ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldboy ~]# cp -a /etc/profile /root

[root@oldboy ~]# echo "PATH=$PATH:/tmp" >> /etc/profile

[root@oldboy ~]# grep "PATH=$PATH" /etc/profile

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/tmp

[root@oldboy ~]# source /etc/profile

[root@oldboy ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/tmp

[root@oldboy ~]# test.sh

You set OK!

 

 

 

 

 

******特殊的环境变量******

 

 

1、PATH环境变量

作用指定让命令自动搜索路径

[root@oldboy ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

 

 

2、PS1命令行提示符显示

作用修改指定的用户命令行提示符显示

[root@oldboy ~]echo $PS1

[\u@\h \w]

[root@oldboy ~]export PS1='[\u@\h \w\t]'

[root@oldboy ~14:47:13]echo $PS1

[\u@\h \w\t]

 

提示符

功能描述

\u

当前用户的账号名称 如:root

\h

仅取主机的第一个名字,如上例,则为debian,.linux则被省略

\w

完整的工作目录名称。家目录会以 ~代替 ,如cd /etc/sysconfig显示/etc/sysconfig

\W

利用basename取得工作目录名称,所以只会列出最后一个目录 如上例则只显示sysconfig

\$

提示字符,如果是root时,提示符为:# ,普通用户则为:$

\t

显示时间为24小时格式,如:HH:MM:SS

\T

显示时间为12小时格式

\A

显示时间为24小时格式:HH:MM

\v

显示时间为24小时格式:HH:MM

\#

下达的第几个命令

\d

代表日期,格式为weekday month date,例如:Wed Dec 12

\H

完整的主机名称。例如:hostname是debian.linux

 

 

 

 

 

 

感谢老男孩博客提供参考  https://blog.51cto.com/oldboy

 

posted @ 2019-02-28 13:54  邹龙彬  阅读(754)  评论(0编辑  收藏  举报