我有两个Linux xterms,“几乎”相同的设置。一个设置有效,另一个设置不适用于我的应用程序。
是否有工具可以帮助我找出导致失败的特定环境变量? (视觉差异)
目前 - 我做
env > a1
env > a2
在2个xterms中并在它们上做差异。
但是想知道是否有一个工具可以帮我节省一些时间。感谢
答案 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)