用户的环境变量在用户目录下的profile或bashrc文件中定义。
可以用export命令查看已经设好的环境变量。
1 Linux export命令简介
Linux export命令用于设置或显示环境变量。
在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆 *** 作。
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
Linux export命令简介
2 export参数
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
Linux怎么设置变量环境
3 在linux里设置环境变量的方法
一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/abc/123/bin”目录下,有如下三种方法来设置环境变量:
31 直接用export命令,临时生效
查看是否已经设好,可用命令export查看:
检查:
输出结果:
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="zcwyou"
declare -x LANG="en_USUTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipesh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32: tar=01;31: tgz=01;31: arc=01;31: arj=01;31: taz=01;31: lha=01;31: lz4=01;31: lzh=01;31: lzma=01;31: tlz=01;31: txz=01;31: tzo=01;31: t7z=01;31: zip=01;31: z=01;31: Z=01;31: dz=01;31: gz=01;31: lrz=01;31: lz=01;31: lzo=01;31: xz=01;31: bz2=01;31: bz=01;31: tbz=01;31: tbz2=01;31: tz=01;31: deb=01;31: rpm=01;31: jar=01;31: war=01;31: ear=01;31: sar=01;31: rar=01;31: alz=01;31: ace=01;31: zoo=01;31: cpio=01;31: 7z=01;31: rz=01;31: cab=01;31: jpg=01;35: jpeg=01;35: gif=01;35: bmp=01;35: pbm=01;35: pgm=01;35: ppm=01;35: tga=01;35: xbm=01;35: xpm=01;35: tif=01;35: tiff=01;35: png=01;35: svg=01;35: svgz=01;35: mng=01;35: pcx=01;35: mov=01;35: mpg=01;35: mpeg=01;35: m2v=01;35: mkv=01;35: webm=01;35: ogm=01;35: mp4=01;35: m4v=01;35: mp4v=01;35: vob=01;35: qt=01;35: nuv=01;35: wmv=01;35: asf=01;35: rm=01;35: rmvb=01;35: flc=01;35: avi=01;35: fli=01;35: flv=01;35: gl=01;35: dl=01;35: xcf=01;35: xwd=01;35: yuv=01;35: cgm=01;35: emf=01;35: axv=01;35: anx=01;35: ogv=01;35: ogx=01;35: aac=01;36: au=01;36: flac=01;36: mid=01;36: midi=01;36: mka=01;36: mp3=01;36: mpc=01;36: ogg=01;36: ra=01;36: wav=01;36: axa=01;36: oga=01;36: spx=01;36:xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/abc/123/bin"
declare -x PWD="/root"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="113105164145 6668 22"
declare -x SSH_CONNECTION="113105164145 6668 113105164151 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="2185"
留意一下输出的这部分:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/abc/123/bin"
可以看到已经包括了刚刚设置的变量路径。
变量路径和环境Linux
32 修改profile文件,永久生效
把目录/opt/abc/123/bin在里面加入:
export PATH="
33 修改bashrc文件,永久生效
在里面加入:
export PATH="PATH:/opt/abc/123/bin"¨K14K¨G3G在里面加入:exportPATH="PATH:/opt/abc/123/bin"
检查结果:
34 修改/etc/relocal文件,永久生效
在里面加入:
export PATH="
“/bin”、“/sbin”、“ /usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。
如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加入环境变量。命令 export PATH:/opt/abc/123/bin"“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加入环境变量。命令exportPATH="路径”(或“PATH=
PATH为环境变量名,如DVSDK;调用时用
export DVSDK)可以把这个路径加入环境变量,但是退出这个命令行就失效了。要想永久生效,需要把这行添加到环境变量文件里。有两个文件可选:“/etc/profile”和用户主目录下的“bashprofile”,“/etc/profile”对系统里所有用户都有效,用户主目录下的“bashprofile”只对这个用户有效。exportPATH="
PATH:路径1:路径2:…:路径n" ),意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“
”。
注意,与DOS/Window不同,UNIX类系统环境变量中路径名用冒号分隔,不是分号。另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在文件结尾,按软件的安装顺序添加。
本文已同步至博客站:
>linux环境变量配置相关命令及例程:
1 显示环境变量HOME
$ echo $HOME
/home/redbooks
2 设置一个新的环境变量hello
$ export HELLO="Hello!"
$ echo $HELLO
Hello!
3 使用env命令显示所有的环境变量
$ env
HOSTNAME=redbookssafeorg
PVM_RSH=/usr/bin/rsh
Shell=/bin/bash
TERM=xterm
HISTSIZE=1000
4 使用set命令显示所有本地定义的Shell变量
$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
BASH_VERSION='205b0(1)-release'
COLORS=/etc/DIR_COLORSxterm
COLUMNS=80
DIRSTACK=()
DISPLAY=:00
5 使用unset命令来清除环境变量
set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:
$ export TEST="Test" #增加一个环境变量TEST
$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
TEST=Test
$ unset $TEST #删除环境变量TEST
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了
6 使用readonly命令设置只读变量
如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
$ export TEST="Test" #增加一个环境变量TEST
$ readonly TEST #将环境变量TEST设为只读
$ unset TEST #会发现此变量不能被删除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #会发现此也变量不能被修改
-bash: TEST: readonly variable
环境变量的设置位于/etc/profile文件
如果需要增加新的环境变量可以添加下属行
export path=$path:/path1:/path2:/pahtN
1Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:
永久的:需要修改配置文件,变量永久生效。
临时的:使用export命令声明即可,变量在关闭shell时失效。
2设置变量的三种方法
在/etc/profile文件中添加变量对所有用户生效(永久的)
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
export CLASSPATH=/JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
在用户目录下的bash_profile文件中增加变量对单一用户生效(永久的)
用VI在用户目录下的bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的bash_profile
$ vi /home/guok/bashprofile
添加如下内容:
export CLASSPATH=/JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/bash_profile不然只能在下次重进此用户时生效。
直接运行export命令定义变量只对当前shell(BASH)有效(临时的)
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
环境变量的查看
使用echo命令查看单个环境变量。例如:
echo $PATH
使用env查看所有环境变量。例如:
env
使用set查看所有本地定义的环境变量。
unset可以删除指定的环境变量。
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$
本例使用echo显示常见的变量HOME
$ echo $HOME
/home/kevin
2设置一个新的环境变量
$ export MYNAME=”my name is kevin”
$ echo $ MYNAME
my name is Kevin
3修改已存在的环境变量
接上个示例
$ MYNAME=”change name to jack”
$ echo $MYNAME
change name to jack
4使用env命令显示所有的环境变量
$ env
HOSTNAME=localhostlocaldomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192168136151 1740 22
QTDIR=/usr/lib/qt-31
SSH_TTY=/dev/pts/0
……
5使用set命令显示所有本地定义的Shell变量
$ set
BASH=/bin/bash
BASH_ENV=/root/bashrc
……
6使用unset命令来清除环境变量
$ export TEMP_KEVIN=”kevin” #增加一个环境变量TEMP_KEVIN
$ env | grep TEMP_KEVIN #查看环境变量TEMP_KEVIN是否生效(存在即生效)
TEMP_KEVIN=kevin #证明环境变量TEMP_KEVIN已经存在
$ unset TEMP_KEVIN #删除环境变量TEMP_KEVIN
$ env | grep TEMP_KEVIN #查看环境变量TEMP_KEVIN是否被删除,没有输出显示,证明TEMP_KEVIN被清除了。
7使用readonly命令设置只读变量
注:如果使用了readonly命令的话,变量就不可以被修改或清除了。
$ export TEMP_KEVIN ="kevin" #增加一个环境变量TEMP_KEVIN
$ readonly TEMP_KEVIN #将环境变量TEMP_KEVIN设为只读
$ env | grep TEMP_KEVIN #查看环境变量TEMP_KEVIN是否生效
TEMP_KEVIN=kevin #证明环境变量TEMP_KEVIN已经存在
$ unset TEMP_KEVIN #会提示此变量只读不能被删除
-bash: unset: TEMP_KEVIN: cannot unset: readonly variable
$ TEMP_KEVIN ="tom" #修改变量值为tom会提示此变量只读不能被修改
-bash: TEMP_KEVIN: readonly variable
8通过修改环境变量定义文件来修改环境变量。
需要注意的是,一般情况下,仅修改普通用户环境变量配置文件,避免修改根用户的环境定义文件,因为那样可能会造成潜在的危险。
$ cd ~ #到用户根目录下
$ ls -a #查看所有文件,包含隐藏的文件
$ vi bash_profile #修改用户环境变量文件
例如:
编辑你的PATH声明,其格式为:
PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
你可以自己加上指定的路径,中间用冒号隔开。
环境变量更改后,在用户下次登陆时生效。
如果想立刻生效,则可执行下面的语句:$source bash_profile
需要注意的是,最好不要把当前路径”/”放到PATH里,这样可能会受到意想不到的攻击。
完成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shell搜索的路径之外的程序了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)