我想通过用户指定的值来修改环境变量。例如,用户将提供要修改的变量以及要放入变量中的值。
我尝试了以下命令:
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
在设置任何环境变量时使用内置函数。