我有很多自定义项,并希望在原始环境中运行我的测试程序。当然,我可以使用一个小的 shell 脚本来包装和传递参数,但如果我可以仅对位于某些子目录下的命令调用预脚本并可能调用后脚本,那将是很酷和有用的。我正在使用的外壳是zsh。
你在"原始环境"中包含什么。
如果你想将自己与整个系统隔离开来,那么也许 chroot 就是你所追求的。你可以建立一个完整的新系统,有自己的/etc
、/bin
等,但与正在运行的系统共享内核、网络和其他非文件系统的东西。需要 root 的合作(chroot
系统调用保留给 root)。
如果要将自己与点文件隔离开来,请使用不同的 HOME
环境变量值运行程序:
HOME=~/test-environment /path/to/test-program
HOME=~/test-environment zsh
如果这是专门针对 zsh 的配置文件,你可以在启动之前设置 ZDOTDIR
环境变量,告诉 zsh 从 $HOME
以外的目录运行自己的点文件(或zsh --no-rcs
不加载任何点文件)。
如果您所说的原始环境是指一组完全受控的环境变量,那么env
程序就是这样做的。
env -i PATH=$PATH HOME=$HOME program args
将仅使用您指定的环境变量运行program args
。