给定一个恶劣的环境,例如:
for word in builtin command type unfunction declare set unset alias; do
eval "$word(){ echo $word function; }; alias $word='echo $word alias'"
done
是否可以访问内置命令?例如,是否可以执行以下操作:
\command \builtin \type echo
仍然看到:
echo is a shell builtin
敌对(或锁定)环境是否有可能完全重新定义事物,从而永远无法访问底层的内置函数或路径名?
使用 Bash,如果启用POSIX 模式:
由于
set
andunset
是特殊的内置函数,您可以通过 POSIX 模式访问它们,然后使用它们来摆脱功能,然后使用\unalias
来摆脱别名:但我想不出办法,说:
(没有尝试启动一个新的 shell,这可能在受限 shell 中是不允许的。)