谷歌今天没有给予这个爱,所以我转向专家…
目前,我正在依靠Linux(RHEL 4)中的/ proc / pid / environ特性来检查特定的环境variables。 麻烦的是,似乎某些环境variables没有出现在那里出于某种原因。
例:
create some test vars: $ export T_1=testval TEST_1=testval T=testval TESTING_LONGEST=testval open a subshell: $bash $ cat /proc/self/environ|tr "\0" "\n"|grep testval TESTVARIABLE_LONGEST=testval T=testval
嗯… T_1和TEST_1去了哪里? 什么规则pipe理这个奇怪的宇宙?
在此先感谢,乔希
更新:
我已经能够在不同的RHEL版本和不同的用户上重现这个问题,但是它似乎是Bash独特的(我正在使用3.0)。 ksh不显示此行为。
看看在Unix上正在运行的进程的环境variables? ; 它指出/ proc / * / environ在某些内核上被限制为4096个字节,并且不显示在该shell中被更改的env vars。
尝试使用strings而不是tr 。 find可读的string比用换行符replaceNUL要好得多。
strings /proc/$$/environ
/ proc中的某些文件对小块中的读取没有反应。 尝试这样的事情,而不是:
dd if=/proc/self/environ bs=1024k | tr "\0" "\n" | grep testval