Linux⾥设置环境变量的⽅法(exportPATH)
1.动态库路径的设置
Linux下调⽤动态库和windows不⼀样.linux 可执⾏程序是靠配置⽂件去读取路径的,因此有些时候需要设置路径
具体操作如下
export LD_LIBRARY_PATH=/home/.....(动态库的⽬录)
不过这种设置⽅法只是在当前的session中有效
你可以修改配置⽂件实现任何session都有效
2.环境变量的设置
⼀般来说,配置交叉编译⼯具链的时候需要指定编译⼯具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt
/au1200_rm/build_tools/bin”⽬录下,build_tools就是我的编译⼯具,则有如下三种⽅法来设置环境变量:
2.1、直接⽤export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可⽤命令export查看:
可以看到,环境变量已经设好,PATH⾥⾯已经有了我要加的编译器的路径。
2.2、修改profile⽂件:
#vi /etc/profile
在⾥⾯加⼊:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
让环境变量⽴即⽣效需要执⾏如下命令:
#source /etc/profile
2.3. 修改.bashrc⽂件:
# vi /root/.bashrc
在⾥⾯加⼊:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
后两种⽅法⼀般需要重新注销系统才能⽣效,最后可以通过echo命令测试⼀下:
# echo $PATH
看看输出⾥⾯是不是已经有了/my_new_path这个路径了。
-----------------------------------------------------------------------------------
“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执⾏⽂件在这⼏个标准位置,在终端命令⾏输⼊该软件可执⾏⽂件的⽂件名和参数(如果需要参数),回车即可。
如果不在标准位置,⽂件名前⾯需要加上完整的路径。不过每次都这样跑就太⿇烦了,⼀个“⼀劳永逸”的办法是把这个路径加⼊环境变量。命令 “PATH=$PATH:路径”可以把这个路径加⼊环境变量,但是
退出这个命令⾏就失效了。要想永久⽣效,需要把这⾏添加到环境变量⽂件⾥。有两个⽂件可选:“/etc/profile”和⽤户主⽬录下的“.bash_profile”,“/etc/profile”对系统⾥所有⽤户都有效,⽤户主⽬录下
的“.bash_profile”只对这个⽤户有效。
“PATH=PATH:路径1:路径2:...:路径n”,意思是可执⾏⽂件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当⽤户输⼊⼀个⼀串字符并按回车后,shell会依次在这些路径⾥对应的可执⾏⽂件并交给系统核⼼执⾏。那个“PATH”表⽰原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加,但⽅法与此相同,并且也需要注意“$”。
注意,与DOS/Window不同,UNIX类系统环境变量中路径名⽤冒号分隔,不是分号。另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在⽂件结尾,按软件的安装顺序添加。
格式如下():
# 软件名-版本号
PATH=$PATH:路径1:路径2:...:路径n
其他环境变量=$其他环境变量:...
在“profile”和“.bash_profile”中,“#”是注释符号,写在这⾥除了视觉分隔外没有任何效果。
设置完毕,注销并重新登录,设置就⽣效了。如果不注销,直接在shell⾥执⾏这些语句,也能⽣效,但是作⽤范围只限于执⾏了这些语句的
shell。
相关的环境变量⽣效后,就不必⽼跑到软件的可执⾏⽂件⽬录⾥去操作了。
from:
使⽤linux的朋友越来越多了,在linux下做开发⾸先就是需要配置环境变量,下⾯以配置环境变量为例介绍三种配置环境变量的⽅法。
1.修改/etc/profile⽂件
如果你的计算机仅仅作为开发使⽤时推荐使⽤这种⽅法,因为所有⽤户的shell都有权使⽤这些环境变量,可能会给系统带来安全性问题。
(1)⽤⽂本编辑器打开/etc/profile
(2)在profile⽂件末尾加⼊:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=JAVA_HOME/bin:PATH
CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
(3)重新登录
注解:
a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装⽬录
b. linux下⽤冒号“:”来分隔路径
c. PATH / CLASSPATH / $JAVA_HOME 是⽤来引⽤原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是⼀种常见的错误。
d. CLASSPATH中当前⽬录“.”不能丢,把当前⽬录丢掉也是常见的错误。
e. export是把这三个变量导出为全局变量。
f. ⼤⼩写必须严格区分。
2. 修改.bashrc⽂件
这种⽅法更为安全,它可以把使⽤这些环境变量的权限控制到⽤户级别,如果你需要给某个⽤户权限使⽤这些环境变量,你只需要修改其个⼈⽤户主⽬录下的.bashrc⽂件就可以了。
(1)⽤⽂本编辑器打开⽤户⽬录下的.bashrc⽂件
(2)在.bashrc⽂件末尾加⼊:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=JAVA_HOME/bin:PATH
export PATH
set CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export CLASSPATH
(3)重新登录
3. 直接在shell下设置变量
不赞成使⽤这种⽅法,因为换个shell,你的设置就⽆效了,因此这种⽅法仅仅是临时使⽤,以后要使⽤的时候⼜要重新设置,⽐较⿇烦。
只需在shell终端执⾏下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=JAVA_HOME/bin:PATH
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
在 linux系统下,如果你下载并安装了应⽤程序,很有可能在键⼊它的名称时出现“ command not found ”的提⽰内容。如果每次都到安装⽬标⽂件夹内,到可执⾏⽂件来进⾏操作就太繁琐了。这涉及到环境变量 PATH 的设置问题,⽽ PATH 的设置也是在 linux 下定制环境变量的⼀个组成部分。本⽂基于 RedHat 9.0 ,详细讲解了环境变量定制的问题。
2、变量简介
Linux 是⼀个多⽤户的。每个⽤户登录系统后,都会有⼀个专⽤的运⾏环境。通常每个⽤户默认的环境都是相同的,这个默认环境实际上就是⼀组环境变量的定义。⽤户可以对⾃⼰的运⾏环境进⾏定制,其⽅法就是修改相应的系统环境变量。
3、常见的环境变量
$PATH:决定了shell将到哪些⽬录中寻命令或程序
$HOME:当前⽤户主⽬录
$MAIL:是指当前⽤户的邮件存放⽬录。
$SHELL:是指当前⽤户⽤的是哪种Shell。
$HISTSIZE:是指保存历史命令记录的条数
$LOGNAME:是指当前⽤户的登录名。
$HOSTNAME:是指主机的名称,许多应⽤程序如果要⽤到主机名的话,通常是从这个环境变量中来取得的。
$LANG/LANGUGE:是和语⾔相关的环境变量,使⽤多种语⾔的⽤户可以修改此环境变量。
PS1:是基本提⽰符,对于root⽤户是#,对于普通⽤户是,也可以使⽤⼀些更复杂的值。
$PS2:是附属提⽰符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,⽐如下列命令会将提⽰符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "
$IFS:输⼊域分隔符。当shell读取输⼊时,⽤来分隔单词的⼀组字符,它们通常是空格、制表符和换⾏符。
$0:shell脚本的名字。
例如,在我的Linux系统中:
echo 0
/bin/bash
$#:传递给脚本的参数个数。
:shell脚本的进程号,脚本程序通常会⽤它⽣成⼀个唯⼀的临时⽂件,如/tmp/tmfile_
例如,在我的Linux系统中:
echo $
31038 #表⽰当前shell进程号为31038
4、export命令
export命令将作为他参数的变量导⼊到⼦shell中,并使之在⼦shell中有效。export命令把⾃⼰的参数创建为⼀个环境变量,⽽这个环境变量可以被其他脚本和当前程序调⽤的程序看见。
4.1 实验导出变量
(1)我们先列出脚本程序export2
#!/bin/sh
echo "$foo"
echo "$bar"
(2)然后是脚本export1。在这个脚本的结尾,我们调⽤export2:
foo="The first meta-syntactic variable"
export bar="The second meta-syntactic variable"
export2
运⾏这个脚本,将得到如下的输出:
$ export1
#这是个空格,是因为变量foo在export2中不可⽤,所以$foo被复制为空
linux安装jdk18并配置环境变量The second meta-syntactic variable
$
4.2 设置⼀个新的环境变量WELCOME
export WELCOME="Hello!" echo $WELCOME
Hello!
5、定制环境变量
环境变量是和 Shell 紧密相关的,⽤户登录系统后就启动了⼀个 Shell 。对于 Linux 来说⼀般是 bash ,但也可以重新设定或切换到其它的Shell 。根据发⾏版本的情况, bash 有两个基本的系统级配置⽂件: /etc/bashrc 和 /etc/profile 。这些配置⽂件包含两组不同的变量: shell 变量和环境变量。前者只是在特定的 shell 中固定(如 bash ),后者在不同 shell 中固定。很明显, shell 变量是局部的,⽽环境变量是全局的。环境变量是通过 Shell 命令来设置的,设置好的环境变量⼜可以被所有当前⽤户所运⾏的程序所使⽤。对于 bash 这个 Shell 程序来说,可以通过变量名来访问相应的环境变量,通过 export 来设置环境变量。下⾯通过⼏个实例来说明。
5.1 使⽤命令echo 显⽰环境变量
#本例使⽤echo显⽰常见的变量HOME
echo HOME
/home/lqm
5.2 设置⼀个新的环境变量
$ export HELLO=“Hello!”
echo HELLO
Hello!
5.3 使⽤ env 命令显⽰所有的环境变量
$ env
SSH_AGENT_PID=1875
HOSTNAME=lqm
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
……
5.4 使⽤set 命令显⽰所有本地定义的Shell 变量
$ set
BASH=/bin/bash
……
5.5 使⽤ unset 命令来清除环境变量
$ export TEST=“test” # 增加⼀个环境变量 TEST
$ env | grep TEST # 此命令有输出,证明环境变量 TEST 已经存在了
unset TEST #删除环境变量TEST
$ env | grep TEST # 此命令⽆输出,证明环境变量 TEST 已经存在了
5.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
5.7 ⽤C 程序来访问和设置环境变量
对于 C 程序的⽤户来说,可以使⽤下列三个函数来设置或访问⼀个环境变量。
getenv() 访问⼀个环境变量。输⼊参数是需要访问的变量名字,返回值是⼀个字符串。如果所访问的环境变量不存在,则会返回 NULL 。setenv() 在程序⾥⾯设置某个环境变量的函数。
unsetenv() 清除某个特定的环境变量的函数。
另外,还有⼀个指针变量 environ ,它指向的是包含所有的环境变量的⼀个列表。下⾯的程序可以打印出当前运⾏环境⾥⾯的所有环境变量:
#include <stdio.h>
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf ("%s \n ",*var);
return 0;
}
5.8 通过修改环境变量定义⽂件来修改环境变量。
需要注意的是,⼀般情况下,这仅仅对于普通⽤户适⽤,避免修改根⽤户的环境定义⽂件,因为那样可能会造成潜在的危险。
$vi /etc/bashrc #修改shell变量
$vi /etc/profile #修改环境变量定义⽂件
然后编辑你的 PATH 声明,其格式为:
PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
你可以⾃⼰加上指定的路径,中间⽤冒号隔开。环境变量更改后,在⽤户下次登陆时⽣效,如果想⽴刻⽣效,则可执⾏下⾯的语句:$ source .bash_profile
需要注意的是,最好不要把当前路径 “./” 放到 PATH ⾥,这样可能会受到意想不到的攻击。完成后,可以通过echo PATH 查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于 shell 搜索的路径之外的程序了。
转⾄:
Processing math: 0%
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论