Answers:
如果可以从命令行运行终端程序,则克隆路径很容易。假设您正在使用xterm
,只需xterm &
从要克隆的终端的提示符下运行即可。除非您将新xterm配置为以登录shell身份启动,否则它将在同一目录中启动。任何导出的环境变量也将保留,但未导出的变量将不保留。
克隆整个环境(包括未导出的变量)的快速而肮脏的方法如下:
# from the old shell:
set >~/environment.tmp
# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp
如果设置了任何自定义外壳程序选项,则还必须重新应用这些选项。
您可以将整个过程包装到易于运行的脚本中。让脚本将环境保存到已知文件,然后运行xterm
。让您的.bashrc检查该文件,并将其来源并删除(如果找到)。
或者,如果您不想从另一个终端启动一个终端,或者只是想要更多控制权,则可以使用在.bashrc中定义的一对函数:
putstate () {
declare +x >~/environment.tmp
declare -x >>~/environment.tmp
echo cd "$PWD" >>~/environment.tmp
}
getstate () {
. ~/environment.tmp
}
编辑:更改,putstate
以便它复制外壳程序变量的“导出”状态,以便与其他方法匹配。还可以复制其他东西,例如shell选项(请参阅参考资料help set
)-因此该脚本还有改进的余地。
bash
运行该文件中的命令,然后退出,并且当前shell的环境不会更改。