使用Bash在Linux中设置环境变量

时间:2008-10-24 18:25:47

标签: linux bash unix shell

tcsh中,我有以下脚本工作:

#!/bin/tcsh
setenv X_ROOT /some/specified/path

setenv XDB    ${X_ROOT}/db
setenv PATH   ${X_ROOT}/bin:${PATH}

xrun -d xdb1 -i $1 > $2

Bash中tcsh setenv函数的等价物是什么?

有直接模拟吗?环境变量用于查找可执行文件。

5 个答案:

答案 0 :(得分:100)

export VAR=value会将VAR设置为值。如果你想要空格,请用单引号括起来,比如export VAR='my val'。如果要插入变量,请使用双引号,如export VAR="$MY_OTHER_VAR"

答案 1 :(得分:33)

人们经常建议写作的原因

VAR=value
export VAR

而不是较短的

export VAR=value

是较长的形式在比短形式更多不同的壳中起作用。如果您知道自己正在处理bash,那么当然可以正常工作。

答案 2 :(得分:26)

使用Linux上的Bash设置本地和环境变量

检查Bash中名为LOL的变量的本地或环境变量:

el@server /home/el $ set | grep LOL
el@server /home/el $
el@server /home/el $ env | grep LOL
el@server /home/el $

完整性检查,没有名为LOL的本地或环境变量。

在本地设置名为LOL的局部变量,但不在环境中设置。所以设置它:

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ env | grep LOL
el@server /home/el $

变量'LOL'存在于局部变量中,但不存在于环境变量中。如果重新启动终端,注销/登录或运行exec bash,LOL将消失。

设置局部变量,然后清除Bash中的所有局部变量

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ exec bash
el@server /home/el $ set | grep LOL
el@server /home/el $

您也可以取消设置一个变量:

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ unset LOL
el@server /home/el $ set | grep LOL
el@server /home/el $

局部变量LOL消失了。

将局部变量提升为环境变量:

el@server /home/el $ DOGE="such variable"
el@server /home/el $ export DOGE
el@server /home/el $ set | grep DOGE
DOGE='such variable'
el@server /home/el $ env | grep DOGE
DOGE=such variable

请注意,导出会使其显示为局部变量和环境变量。

导出的变量DOGE在Bash重置后仍然存在:

el@server /home/el $ exec bash
el@server /home/el $ env | grep DOGE
DOGE=such variable
el@server /home/el $ set | grep DOGE
DOGE='such variable'

取消设置所有环境变量:

你必须拔出一罐Chuck Norris来重置所有环境变量而不需要注销/登录:

el@server /home/el $ export CAN="chuck norris"
el@server /home/el $ env | grep CAN
CAN=chuck norris
el@server /home/el $ set | grep CAN
CAN='chuck norris'
el@server /home/el $ env -i bash
el@server /home/el $ set | grep CAN
el@server /home/el $ env | grep CAN

您创建了一个环境变量,然后重置终端以摆脱它们。

或者您可以手动设置和取消设置环境变量:

el@server /home/el $ export FOO="bar"
el@server /home/el $ env | grep FOO
FOO=bar
el@server /home/el $ unset FOO
el@server /home/el $ env | grep FOO
el@server /home/el $

答案 3 :(得分:11)

VAR=value将VAR设置为值。

之后export VAR也会将其提供给子进程。

export VAR=value是两者的简写。

答案 4 :(得分:7)

我认为你正在寻找export - 虽然我可能是错的..我以前从未玩过tcsh。使用以下语法:

export VARIABLE=value