linux环境变量差异

时间:2010-09-20 23:05:23

标签: linux shell

我有两个Linux xterms,“几乎”相同的设置。一个设置有效,另一个设置不适用于我的应用程序。

是否有工具可以帮助我找出导致失败的特定环境变量? (视觉差异)

目前 - 我做

env > a1
env > a2

在2个xterms中并在它们上做差异。

但是想知道是否有一个工具可以帮我节省一些时间。感谢

3 个答案:

答案 0 :(得分:1)

汇总了@msw和@Adam Byrtek(我投了票)的评论,我们得到了类似下面的内容。请注意,diff有一个并排的选项,如果你没有X:

,它可以很好地工作
a1 $ env | sort > a1
a2 $ env | sort > a2
#somehow get the files on the same host

a2 $ meld a1 a2
# or, in a terminal setting
a2 $ diff --side-by-side a1 a2

要寻找的是PATH,LD_PRELOAD以及任何APP变量,如JAVA_HOME,PYTHON_PATH或RUBYPATH。

答案 1 :(得分:0)

对我来说,困难的部分是在我的一些环境变量中处理换行符。所以我使用空字节来分隔变量:

a1 $ env -0 | sort -z | tr "\0" "\n" > /tmp/a1.env
a2 $ env -0 | sort -z | tr "\0" "\n" > /tmp/a2.env
a2 $ diff /tmp/a1.env /tmp/a2.env

排序是为了帮助差异化匹配变量。

答案 2 :(得分:0)

可以像这样找到两个 envs(env 和 bundle exec env)之间的差异:

diff <(env) <(bundle exec env)

如果我们有一个包含 .env 文件的文件夹,并且我们想知道使用这个 dotenv 文件和不使用它在 envs 中的区别:

diff <(bundle exec env) <(export $(egrep -v '^#' .env | xargs) && bundle exec env)