使用“script”命令录制会话时 cd 到原始位置

使用“script”命令录制会话时 cd 到原始位置

script log.txt我的 bash 配置文件中有;它创建一个新的子进程并将我的整个会话记录到 log.txt 中。当我按cmd+t打开一个新终端时,通常会在调用该命令的同一目录中打开一个终端;但是,新的脚本子进程始终恢复到主目录。

有没有办法以某种方式将当前目录“传递”到此脚本命令?

答案1

听起来 MacOS 的终端有一项功能,它可以从一个选项卡中运行的进程中提取当前工作目录(使用/proc或类似),并将其用作新选项卡的初始当前工作目录。

在这种情况下,第一个选项卡中运行的进程是script- 它从不费心更改其当前工作目录,因此新选项卡总是会出现该目录。实际上只有(某些)子进程的当前工作目录script正在更改,但终端应用程序没有注意到这一点。

如果这是正确的,那么除了更改终端应用程序的工作方式或更改工作方式之外,没有其他解决方法script

答案2

当前目录很简单:

CWD="$(pwd)" ; 
echo "PWD === ${CWD}" ;

或者你也可以在线传递这个,例如:

CWD="something" ./script log.txt

脚本的内容包含:

cat script
#!/bin/bash
if [ $CWD ] ; then echo "CWD Preset & == ${CWD}" ; else echo "CWD NOT SET... SETTING to: $(pwd)" ; CWD=$(pwd) ; fi ;

显然,您也可以使用export上述CWD变量,在这种情况下,任何其他子 shell/进程都应该可以访问它。

export CWD="$(pwd)" ;  # or the path of interest
# ... then post New Terminal / Session:
echo "CWD == ${CWD}" ; 

相关内容