在bash中的命令之前设置环境变量

时间:2015-09-27 17:21:16

标签: macos bash environment-variables sh

我正在进行一些MPC库的安装,我来到这个命令行(之后称为“初始命令”):

LD_LIBRARY_PATH=/usr/local/gnu/gmp-6.0.0/lib:/usr/local/gnu/mpfr-3.1.2/lib ../configure --prefix=/usr/local/gnu/mpc-1.0.3 --with-gmp=/usr/local/gnu/gmp-6.0.0 --with-mpfr=/usr/local/gnu/mpfr-3.1.2

其中设置了LD_LIBRARY_PATH以及配置命令

的位置
../configure --prefix=/usr/local/gnu/mpc-1.0.3 --with-gmp=/usr/local/gnu/gmp-6.0.0 --with-mpfr=/usr/local/gnu/mpfr-3.1.2

之后执行。请注意,在初始行之后,还有另一行相同类型,另一行设置为LD_LIBRARY_PATH和另一个命令。

据我了解,初始行相当于

export LD_LIBRARY_PATH=/usr/local/gnu/gmp-6.0.0/lib:/usr/local/gnu/mpfr-3.1.2/lib
../configure --prefix=/usr/local/gnu/mpc-1.0.3 --with-gmp=/usr/local/gnu/gmp-6.0.0 --with-mpfr=/usr/local/gnu/mpfr-3.1.2
unset LD_LIBRARY_PATH

我错了吗?如果是这样,如果我想将初始命令放在.sh文件中,我只需要将它替换为前三行,对吧?如果没有,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你有点不对劲。导出使该设置可用于当前shell中的所有命令和子进程。在命令行上设置它仅在该命令的持续时间内设置它。

如果您正在编写shell脚本,设置变量并将其导出一次是很正常的,因此您不必在每一行上执行此操作。该值仅在执行shell脚本 1 期间有效。它不会影响调用shell脚本的父进程,只会影响shell脚本中的命令。您不需要在shell脚本的末尾取消设置值。

假设您没有使用.source运行shell脚本,请

1