无法从脚本中取消设置环境变量

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/配置文件