有没有办法从 bash 脚本调用完全隔离的子 shell?我的意思是,被调用的子 shell 不会有任何从其父级继承的变量。这本质上就是我想要实现的目标
env -i "$BASH" -c 'your code here'
Run Code Online (Sandbox Code Playgroud)
将启动一个新的解释器在最初空的环境中bash进行解释。your code here
由于它是一个新bash实例,它不会继承别名、位置参数、未导出的变量、函数。
使用env -i它也不会继承导出的变量和函数(由调用定义bash或可能从之前继承)。
它仍然会继承在 fork 和命令执行中保留的一些其他类型的属性,例如umask,在没有 close-on-exec 标志的情况下打开的文件描述符、限制、一些信号配置(例如trap '' INT调用者中的 a 也会导致 SIGINT 被忽略)在被调用者中)。