摘录自 :鹤鹤有明 https://blog.csdn.net/u011630575/article/details/49839893
Rooqs https://www.jianshu.com/p/9d680bdbc170
平时我们在linux环境下安装软件时会习惯的安装在/usr/local/目录下,shell脚本可能会存放在/usr/local/bin/ 目录下,但是可能因为不同系统的原因。/usr/local/bin/可能不在环境变量中,导致不能在全局执行shell脚本。
解决方法:
查看现有PATH:
现有的PATH,执行某一个命令时,会根据PATH设置的顺序一个一个目录的去寻找,如果找到就停止。如果存在两个相同的命令但是目录不一样时,这个顺序就尤为重要。
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
修改环境变量及生效:
方法一:
在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用vim在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
要让刚才的修改马上生效,需要执行以下代码
# source /etc/profile
方法二:
在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用vim在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
要让刚才的修改马上生效,需要在用户目录下执行以下代码
# source .bash_profile
方法三:
直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
例如:export PATH=/usr/local/webserver/php/bin:$PATH
按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下:
(1)永久的:需要修改配置文件,变量永久生效。
常见的配置文件包括:
(1-1)
/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vim /etc/profile
添加一行:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-2)
/etc/bashrc:对所有用户生效;
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
编辑方法如上,不再赘述
(1-3)
~/.bash_profile:仅会对当前用户有效;
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
例如:编辑yumh用户目录(/home/yumh)下的.bash_profile
$ vim /home/yumh/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-4)
~/.bashrc:仅会对当前用户有效;
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
编辑方法如上,不再赘述
另外,~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系
综述,对上述文件修改,添加你需要的变量,在启动一个shell(终端,terminal)时,你所定义的变量均会生效的。
(2)临时有效:
使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
在shell的命令行下直接使用[export 变量名=变量值] 定义变量
环境变量的查看
(1)使用echo命令查看单个环境变量。例如:
echo $PATH
(2)使用env查看所有环境变量。例如:
env echo
(3)使用set查看所有本地定义的环境变量。例如:
set
另外,unset可以删除指定的环境变量。
常用的环境变量名称(echo 变量名称)
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
原文链接:https://blog.csdn.net/u011630575/article/details/49839893