当前位置:  开发笔记 > 编程语言 > 正文

Linux:环境变量存储在哪里?

如何解决《Linux:环境变量存储在哪里?》经验,为你挑选了4个好方法。

如果我输入终端,

export DISPLAY=:0.0

...存储该环境变量的shell在哪里?

我正在使用Ubuntu 8.10.我查看了文件〜/ .profile和/ etc/profile,找不到DISPLAY的痕迹.



1> Johannes Sch..:

进程的环境变量在运行时存在,并且不存储在某个文件中.它们存储在进程自己的内存中(即发现它们传递给子进程的位置).但是有一个虚拟文件

/proc/pid/environ

此文件显示调用进程时传递的所有环境变量(除非进程覆盖了其内存的那部分 - 大多数程序没有).内核通过该虚拟文件使它们可见.人们可以列出它们.例如,为了查看过程3940的变量,可以做到

cat /proc/3940/environ | tr '\0' '\n'

每个变量由下一个变量的二进制零分隔.tr将零替换为换行符.


内核将它们存储在用户空间中的特定位置,这就是/ proc//environ暴露的内容.但是,如果使用putenv或setenv修改程序中的环境,则可能会重新分配初始环境块(以容纳新变量).新变量不会显示在/ proc//environ的输出中.
内核不存储环境变量,它们以用户模式存储.如果已重新分配环境块,则/ proc//environ可能会返回错误的值.
应该假定`/ proc`中的任何内容都是特定于操作系统的.编写看待`/ proc`的程序对我来说是一个很大的WTF.

2> tddmonkey..:

输入"set",您将获得所有当前变量的列表.如果你想要持久化的东西把它放在〜/ .bashrc或〜/ .bash_profile中(如果你正在使用bash)



3> JohnnyQ..:

如果要将环境放在系统范围内,可以使用/etc/environmentfile来实现.


@ user2284570在哪里指出问题?你能详细说明吗?

4> cletus..:

它存储在进程(shell)中,因为您已导出它,所以处理生成的任何进程.

执行上述操作不会将其存储在/ etc/profile等文件系统中的任何位置.你必须明确地将它放在那里才能实现.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有