csh脚本继承环境变量?

时间:2010-03-10 04:26:05

标签: solaris csh

当我在Solaris上运行一个简单的csh脚本时,我发现了一个奇怪的问题。

#!/bin/csh
echo $LD_LIBRARY_PATH

让我们调用此脚本test。当我运行时:

shell> echo $LD_LIBRARY_PATH
shell> /usr/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/lib:/my_app/lib
shell> ./test
shell> /usr/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/lib

他们为$ LD_LIBRARY_PATH打印出完全不同的值。我无法弄清楚为什么。 (我的linux机器上没问题)

谢谢!

2 个答案:

答案 0 :(得分:1)

您是否在$LD_LIBRARY_PATH中设置了$HOME/.cshrc

You really shouldn't如果你这样做,因为它通常会破坏软件,但是将脚本的第一行更改为#!/bin/csh -f会导致脚本在开始时不读取.cshrc个文件,保护您免受其他犯错误的用户的侵害。

答案 1 :(得分:0)

如果您的交互式shell位于sh / ksh系列中,您可能已使用“set”设置了LD_LIBRARY_PATH但未将其导出。在这种情况下,它的新值将设置为普通变量,但不会导出到环境中。但是你的脚本更有可能重新初始化变量。

您可以使用“env”命令从交互式shell中转出导出的环境以进行检查。

相关问题