OS X 的终端如何将新选项卡的目录传递给 login 或 bash?

OS X 的终端如何将新选项卡的目录传递给 login 或 bash?

在 OS X 中,您可以将 shell 添加到 /etc/shells 并将其设置为用户的默认 shell,这样当他们打开终端时,就会看到该 shell。此外,您可以选择在与当前焦点选项卡相同的目录中打开所有新的终端选项卡,这是通过提示中嵌入的函数将密码发送到终端应用程序来实现的,新选项卡将该信息传递给 login 或 bash。我的问题是,这些信息如何作为参数传递给 login 或 bash?环境变量?

我想要知道的原因是,cd /path/to/last/dir当您使用非 OS X 附带的 shell(例如现代 bash)打开选项卡(使用所需的 dir 设置)时,OS X 附带的 shell 不会显示运行的第一个命令,我想找到一种方法在我的设置中复制它。

终端有一个/usr/local/bin/bash --noediting -i正在运行,每个选项卡都有以下内容正在运行:

login -pf camdennarzt -bash

如果您使用的 shell 不是随 OS X 附带的,那么第一个命令会运行,cd /path/to/last/dir但它会在提示符下运行,就像输入命令一样。如果您使用的是包含的 shell,目录仍会更改,但执行该操作的命令不会显示。

/etc/bashrc_Apple_Terminal似乎是相关的。

在 Sierra 中,它显示 shell 以如下方式启动:login -pfl camdennarzt /bin/bash -c 'exec -la bash /usr/local/bin/bash'并且问题已消失,因此这可能有关。

相关内容