env-update干了些什么

时间:2022-04-06 04:21:29

http://www.linuxsir.org/bbs/thread339077-2.html乐哥的话-关于env-update

http://www.gentoo.org/doc/zh_cn/hand...ap=5#doc_chap2

env-update脚本

/etc/env.d中的好几个文件都定义了PATH变量。这并没有错:当你运行env-update的时候,它会在更新环境变量之前把这些定义都追加到PATH里,因此对于软件包(或者用户)来说将会很容易地设置他们自己的环境变量,而不影响到现有变量的值。

env-update脚本会根据/etc/env.d里文件的字母顺序来附加变量的值。这些文件名必须要以两位数字开头。

代码 2.3: env-update所用的更新顺序

00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

变量并不总是被串联起来,只有下列变量才会被串联:KDEDIRS、PATH、LDPATH、MANPATH、INFODIR、INFOPATH、 ROOTPATH、CONFIG_PROTECT、CONFIG_PROTECT_MASK、PRELINK_PATH以及 PRELINK_PATH_MASK。对于(/etc/env.d里的文件中按照字母顺序排列后)其他所有变量,最新定义的值才会被使用到。

当你运行env-update的时候,它会在文件/etc/profile.env里(会被/etc/profile使用)创建所有的环境变量。它也会从 变量LDPATH中获取信息用来建立/etc/ld.so.conf。这些完成以后,它将运行ldconfig来重建动态链接器需要的文件/etc /ld.so.cache。

如果你想在运行env-update后立即看到效果,执行下面的命令来更新你的环境。自己安装过Gentoo的用户可能已经记住了这个安装指南中提到过的命令:

代码 2.4: 更新环境

# env-update && source /etc/profile

注意: 上面的命令只会更新你当前终端里的环境变量、新控制台以及它们的子程序。因此,假如你正在X11里工作,你要么在每一个你打开的终端里输入source /etc/profile,要么重新启动X,这样所有新的终端才能引用到新的变量。如果你使用了登录管理器,登陆成root然后输入/etc /init.d/xdm restart。如果不是这样,你需要注销然后重新登录回X这样才能产生使用新变量值的子程序。

重要: 你在定义其他变量时不能使用shell变量。这意味着这样的定义FOO="$BAR"(此处$BAR是另外一个变量)是不允许的。