如何在unix中修改环境变量?

如何在unix中修改环境变量?

我想通过用户指定的值来修改环境变量。例如,用户将提供要修改的变量以及要放入变量中的值。

我尝试了以下命令:

set[variable[=val]]

它运行良好,但我不知道修改的正确方法是否正确,或者我必须export为此使用命令?

我的代码是:

modify_env(){
echo "Environmental variable:"
read var
echo "Environmental value"
read value
set [var[=value]]
}

答案1

help set

set: Set or unset values of shell options and positional parameters.

因此,您输入的值set实际上成为位置参数(参数),set而不是环境变量。

$ set foo=bar 
$ echo "$foo" ##Prints nothing because it is not a variable

$ echo "$1"  ##Prints the first argument of the command "set foo=bar"
foo=bar

现在来自help export

export: Set export attribute for shell variables.

这就是您需要在整个环境中设置变量的内容,即该值也将传播到所有子进程。

$ export foo=bar  ##setting environment variable foo having value "bar"
$ echo "$foo"  ##printing the value of "foo" in current shell
bar
$ bash -c "echo $foo" ##printing the value of "foo" in a subshell
bar

因此,简而言之,您需要export在设置任何环境变量时使用内置函数。

相关内容