w00*_*00t 3 scripting bash environment-variables source
我正在尝试从脚本中取消设置所有环境变量。该脚本运行良好,但如果我运行 env 它仍然显示所有变量集。
如果我从 CLI 运行命令,它会起作用并且变量未设置。
unset `env | awk -F= '/^\w/ {print $1}' | xargs`
Run Code Online (Sandbox Code Playgroud)
知道如何从脚本运行它吗?
另外,知道如何从脚本中获取 /etc/profile 吗?这也行不通。
我需要设置名称相同但路径不同的变量,具体取决于我的用户需要的实例。
稍后编辑:
好的,我最终得到了这个(不是很优雅,但无论如何)解决方案:
. script
Run Code Online (Sandbox Code Playgroud)
其中包含:
unset `env | awk -F= '/^\w/ {print $1}'|egrep -v "HOSTNAME|TERM|SHELL|HISTSIZE|SSH_CLIENT|SSH_TTY|USER|LS_COLORS|KDEDIR|MAIL|PATH|INPUTRC|PWD|LANG|HISTIGNORE|SSH_ASKPASS|TEST|SHLVL|HOME|LD_ASSUME_KERNEL|LOGNAME|SSH_CONNECTION|LESSOPEN|HISTTIMEFORMAT|G_BROKEN_FILENAMES|_"|xargs`
source env_variable_file
Run Code Online (Sandbox Code Playgroud)
谢谢!
mat*_*tdm 10
基本上,这是一个标准答案。你不能这样做,因为脚本在一个新的子进程中运行。该进程拥有自己的环境,并且无法更改父进程的环境,无论是设置变量还是取消设置它们。
您可以使用该.命令在当前环境中运行该脚本。你可以用同样的方式获取 /etc/profile :
. /etc/配置文件