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

问题描述 投票:0回答:5

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
函数相当于什么?

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

linux bash unix shell
5个回答
137
投票

export VAR=value
会将 VAR 设置为值。如果需要空格,请将其括在单引号中,例如
export VAR='my val'
。如果您希望对变量进行插值,请使用双引号,例如
export VAR="$MY_OTHER_VAR"


47
投票

人们经常建议写作的原因

VAR=value
export VAR

而不是较短的

export VAR=value

较长的形式比较短的形式适用于更多不同的 shell。 如果您知道自己正在处理

bash
,当然,两者都可以。


33
投票

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

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

$ set | grep LOL
$
$ env | grep LOL
$

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

在本地而不是环境中设置一个名为 LOL 的局部变量。所以设置一下:

$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ env | grep LOL
$

变量“LOL”存在于局部变量中,但不存在于环境变量中。 如果您重新启动终端、注销/登录或运行

exec bash
,LOL将会消失。

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

$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ exec bash
$ set | grep LOL
$

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

$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ unset LOL
$ set | grep LOL
$

局部变量 LOL 消失了。

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

$ DOGE="such variable"
$ export DOGE
$ set | grep DOGE
DOGE='such variable'
$ env | grep DOGE
DOGE=such variable

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

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

$ exec bash
$ env | grep DOGE
DOGE=such variable
$ set | grep DOGE
DOGE='such variable'

取消设置所有环境变量:

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

$ export CAN="chuck norris"
$ env | grep CAN
CAN=chuck norris
$ set | grep CAN
CAN='chuck norris'
$ env -i bash
$ set | grep CAN
$ env | grep CAN

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

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

$ export FOO="bar"
$ env | grep FOO
FOO=bar
$ unset FOO
$ env | grep FOO
$

14
投票

VAR=value
将 VAR 设置为值。

之后

export VAR
也会将其交给子进程。

export VAR=value
是两者兼而有之的简写。


11
投票

我认为你正在寻找

export
- 虽然我可能是错的..我以前从未玩过 tcsh 。使用以下语法:

export VARIABLE=value
© www.soinside.com 2019 - 2024. All rights reserved.