[英]korn shell and environment variables
env和start.env应该在任何shell中运行。 实际上,除了KORN以外,它的确起作用,env变量设置不符合我的预期。 所以看例子。
文件set.env:
#!/bin/bash
export MY_VAR="home" || setenv MY_VAR "home"
文件start.sh:
#!/bin/bash
command . ./set.env || source set.env
echo "$MY_VAR"
我可以看到变量的打印。 但是,如果尝试在ksh下的终端中回显它,则它未定义。
ksh$ start.sh
home
ksh$ echo $MY_VAR
ksh$
我希望在会话中看到$ MY_VAR ...有什么想法吗? //在红色帽子下奔跑
运行start.sh
,您将其作为子命令执行,而不是采购它。 因此,它对环境变量所做的更改仅限于该过程及其子过程。 一旦进程退出,它设置的环境变量就会随之消失。
要可移植地获取脚本,在当前shell中执行该脚本,从而在该shell中设置环境变量,请运行:
# this works on any POSIX shell, including ksh (and bastardizations such as mksh)
. start.sh
...或者,不太便携:
# this is a bashism
source start.sh
顺便说一句,顺便说一句command . ./set.env
command . ./set.env
是...奇怪。 command
阻止执行Shell函数,但会阻止执行名为的函数的任何环境.
被定义为一个越野车环境。 考虑一下. start.sh
单独使用. start.sh
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.