rah*_*hmu 6 shell ksh environment-variables
我需要摆脱 Ksh shell 中的所有环境变量。我可以 fork 一个新实例,但它不可避免地会获取一些 init 文件(据我所知.profile,.kshrc)。有没有办法绕过这些文件和任何其他可能在初始化时读取的文件的来源?
希望我足够清楚。
~/.profile只能由登录 shell 读取。~/.kshrc仅对交互式 shell 执行。
Solarisenv支持在空环境中env - /path/to/command运行的语法(现已弃用,但保留在 Solaris 中,它认真对待向后兼容性)/path/to/command。因此env - /usr/bin/ksh -c /path/to/script将在空环境中运行脚本,并且不会获取任何配置文件脚本。ksh 可能会主动设置一些环境变量:我不知道 ksh88,但 ksh93 设置了_and PWD,而 pdksh 设置了_and PATH。
您可以有选择地或不加选择地从 ksh 内部清除环境变量。
unset x
for x in $(typeset +x); do
unset $x
done
Run Code Online (Sandbox Code Playgroud)
me@local:~ $ env - /path/to/shell
$ env
_=/usr/bin/env
PATH=/usr/bin:/bin
RANDOM=24395
$
Run Code Online (Sandbox Code Playgroud)
笔记:
env - /usr/bin/env返回什么)env是 POSIX 标准命令。编辑澄清了答案。