我正在启动 gnome-terminal 并且在特定路径中工作,例如:/home/user/programs/c
。
现在我正在打开另一个选项卡。当我打开新选项卡时,它也位于同一路径中,即新选项卡的工作目录将是/home/user/programs/c
。
但我想要的是当我打开新标签时它的工作目录应该是/home/user
。
我该如何实现这一点?任何帮助都非常感谢。提前致谢!
答案1
答案2
根据常见问题解答:
从 3.7 版开始,要使新终端在当前终端的工作目录中启动,需要在终端中运行的 shell 进行配合。为此,从 0.34.5 版开始,vte 安装了一个
/etc/profile.d/vte.sh
脚本,该脚本在被调用时会自动进行设置。它同时支持bash(1)
和zsh(1)
。
我查看了/etc/profile.d/vte.sh
,但老实说,我不知道这个脚本中哪里发生了这种情况。忽略这一点,您可以通过修改gnome-terminal
首选项来实现所需的结果。这不是一个非常优雅的解决方案,但它对我使用 Debian 10 来说很有效zsh
。
- “个人资料” > “命令”
- 勾选“运行自定义命令而不是我的 shell”
- 在“自定义命令”文本框中使用你的 shell 的二进制文件
答案3
gnome-terminal 本身似乎没有办法覆盖此行为。我发现最简单的解决方法是向文件cd
中添加显式~/.bashrc
。
echo 'cd $HOME' >> ~/.bashrc
然后,当您打开新选项卡时,它会将当前目录更改回您的主目录。
答案4
这是 gnome-terminal 的一个功能,除了我和 thillai-selvan,似乎每个人都喜欢它。当它不能正常工作时(即当新选项卡在与上一个选项卡相同的目录中打开时),有很多关于如何修复它的文档。但是,关于如何禁用该功能的信息很少。据我所知,它不能在 gnome-terminal UI 或任何配置文件中禁用。所以你需要打破它或绕过它。
对于我的用例来说,echo 'cd $HOME' >> ~/.bashrc
这不是一个好的解决方案,因为在某些应用程序中,我希望它们能够在不同的目录中打开,主要是 vscode 中的嵌入式终端,而 bashrc 中的那一行将阻止它。
该功能通过提供 PROMPT_COMMAND 来实现,每次生成提示时,该命令都会记录当前目录。gnome 的当前版本通过将vte
脚本安装到来实现此/etc/profile.d
功能。您应该能够删除该文件(备份它,以便以后可以恢复)并禁用此功能。