在 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
函数的等效函数是什么?
是否有直接对应的函数?环境变量用于定位可执行文件。
export VAR=value
会把VAR设置为value。如果想要带有空格,需要用单引号括起来,例如export VAR='my val'
。如果想要变量插值,可以使用双引号,例如export VAR="$MY_OTHER_VAR"
。
人们经常建议写作的原因是
VAR=value
export VAR
相比更短的而言
export VAR=value
更长的形式在比较多的shell中都可以使用,如果你知道你正在处理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
注意导出变量将其显示为本地变量和环境变量。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 $
VAR=value
设置 VAR 的值为 value。
之后,export VAR
也会将其传递给子进程。
export VAR=value
是一个简写形式,两者均可实现。
我认为你要找的是export
命令 - 不过我可能错了。因为我以前从未使用过tcsh。请使用以下语法:
export VARIABLE=value