Linux中export 命令及LD_LIBRARY_PATH 变量

来源:互联网 发布:智能家居网络协议 编辑:程序博客网 时间:2024/05/21 09:36

Linux export 命令

功能说明: 设置或显示环境变量。(比如我们要用一个命令,但这个命令的执行文件不在当前目录,这样我们每次用的时候必须指定执行文件的目录,麻烦,在代码中先执行export,这个相当于告诉程序,执行某某东西时,需要的文件或什么东东在这些目录里)

语  法: export [-fnp][变量名称]=[变量设置值]

补充说明: 在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参  数:

    -f  代表[变量名称]中为函数名称。 

 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 

 -p  列出所有的shell赋予程序的环境变量。

一 个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到 任何后继脚本。     ----《UNIX教程》

 

 在 linux 里设置环境变量的方法 ( export PATH )

  一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“ /opt/au1200_rm /build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量: 

1、直接用export命令: 
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin 
查看是否已经设好,可用命令export查看:

 

[root@localhost bin]# export 
declare -x BASH_ENV="/root/.bashrc" 
declare -x G_BROKEN_FILENAMES="1" 
declare -x HISTSIZE="1000" 
declare -x HOME="/root" 
declare -x HOSTNAME="localhost.localdomain" 
declare -x INPUTRC="/etc/inputrc" 
declare -x LANG="zh_CN.GB18030" 
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" 
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" 
declare -x LOGNAME="root" 
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root" 
declare -x OLDPWD="/opt/au1200_rm/build_tools" 
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin" 
declare -x SHELL="/bin/bash" 
declare -x SHLVL="1" 
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" 
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242" 
declare -x SSH_CLIENT="10.3.37.152 2236 22" 
declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22" 
declare -x SSH_TTY="/dev/pts/2" 
declare -x TERM="linux" 
declare -x USER="root" 
declare -x USERNAME="root"


可以看到灰色部分有设置的路径,说明环境变量已经设好,PATH里面已经有了我要加的编译器的路径。 

2、修改profile文件: 
#vi /etc/profile 
在里面加入: 
export PATH="$PATH:/ opt/au1200_rm/build_tools/bin " 

3. 修改.bashrc文件: 
# vi /root/.bashrc 
在里面加入: 
export PATH="$PATH: /opt/au1200_rm/build_tools/bin " 

后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下: 
# echo $PATH 
看看输出里面是不是已经有了 /my_new_path这个路径了。

另有:4 . 修改/etc/re.local 文件: 
             # vi /etc/re.local 
            在里面加入: 

            export PATH="$PATH: /opt/au1200_rm/build_tools/bin "

============================================================

设置 Linux 的 LD_LIBRARY_PATH 变量

在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。如果设置不对,会出现类似如下的错误:

test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory

这是因为没有把动态链接库的安装路径(例如说是 /usr/local/lib )放到变量 LD_LIBRARY_PATH 里。

这时,可以用命令 export 来临时测试确认是不是这个问题:

export LD_LIBRARY_PATH=/usr/local/lib

在终端里运行上面这行命令,再运行这个可执行文件,如果运行正常就说明是这个问题。

接下来的问题是:以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在;如何把这个值持续写到 LD_LIBRARY_PATH 里呢?

我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。

0 0
原创粉丝点击