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}" ;