Bash。 unset all 环境变量问题
Bash. Unset all environment variables problem
我试图删除当前 shell 和子 shell:
的所有环境变量
bash-3.2$ unset $(env | cut -d= -f1) OLDPWD
bash-3.2$ export
bash-3.2$
对于 shell,一切都按预期进行,但 subshell:
出现了一些问题
bash-3.2$ /bin/bash
bash-3.2$ export
declare -x OLDPWD
declare -x PWD="/Users/alex"
declare -x SHLVL="1"
declare -x _="/bin/bash"
bash-3.2$ env
PWD=/Users/alex
SHLVL=1
_=/usr/bin/env
- bash 已创建变量。主目录中没有文件.bashrc 和其他bash 可以在启动时从中获取数据的文件。他从哪里得到这些变量?
- 如果未设置 PATH,bash 如何执行非内置命令?
bash has created variables. ... Where did he get these variables from?
来自 Bash。从字面上看,来自 Bash 源代码。
https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/variables.c#L858
How can bash execute non-builtin commands if PATH is not set?
未设置 PATH 时,Bash 使用一些“默认 PATH”。源代码中有一个宏,可以通过编译./configuration选项更改。
https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/config-top.h#L66 and https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/variables.c#L495
在空白环境中使用env -i
来运行一些东西。
我试图删除当前 shell 和子 shell:
的所有环境变量bash-3.2$ unset $(env | cut -d= -f1) OLDPWD
bash-3.2$ export
bash-3.2$
对于 shell,一切都按预期进行,但 subshell:
出现了一些问题bash-3.2$ /bin/bash
bash-3.2$ export
declare -x OLDPWD
declare -x PWD="/Users/alex"
declare -x SHLVL="1"
declare -x _="/bin/bash"
bash-3.2$ env
PWD=/Users/alex
SHLVL=1
_=/usr/bin/env
- bash 已创建变量。主目录中没有文件.bashrc 和其他bash 可以在启动时从中获取数据的文件。他从哪里得到这些变量?
- 如果未设置 PATH,bash 如何执行非内置命令?
bash has created variables. ... Where did he get these variables from?
来自 Bash。从字面上看,来自 Bash 源代码。
https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/variables.c#L858
How can bash execute non-builtin commands if PATH is not set?
未设置 PATH 时,Bash 使用一些“默认 PATH”。源代码中有一个宏,可以通过编译./configuration选项更改。
https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/config-top.h#L66 and https://github.com/bminor/bash/blob/f3a35a2d601a55f337f8ca02a541f8c033682247/variables.c#L495
在空白环境中使用env -i
来运行一些东西。