bash 中的独立子 shell

Chr*_*ris 2 shell bash

有没有办法从 bash 脚本调用完全隔离的子 shell?我的意思是,被调用的子 shell 不会有任何从其父级继承的变量。这本质上就是我想要实现的目标

Sté*_*las 6

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 被忽略)在被调用者中)。