![Gnome-terminal 自定义命令和动态工作目录](https://linux22.com/image/91651/Gnome-terminal%20%E8%87%AA%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4%E5%92%8C%E5%8A%A8%E6%80%81%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95.png)
这是一种跟进另一个问题。
我在 gnome-terminal 配置文件中使用自定义命令 ( /usr/bin/fish
)。使用 Ubuntu 14.04 时,按 Ctrl-Shift-N 在相同的目录作为当前终端。在 16.04 中,情况发生了变化,现在它总是以$HOME
.我想要旧的行为。
这与采购无关/etc/profile.d/vte.sh
。 Fish 正确地执行了此操作,因为我可以观察标题栏中的目录更改。如果我取消选中 gnome-terminal 配置文件中的自定义命令框,新的终端窗口将正确使用当前目录。但是,它使用我的系统默认 shell:bash。
我无法更改我的系统 shell ( chsh
),因为这是在其他机器上共享的,而这些机器上的 Fish 不可用。
我没有找到从 Fish 中修复此问题的方法,因为终端当前目录不可用。
编辑:由于这是 Ubuntu 中的回归,我也将此报告为 #1609342 给 Ubuntu。
答案1
正如 Gilles 在评论中提到的,设置 SHELL 变量也有效。它没有我的其他答案的缺点。详细信息如下:
.xsessionrc
在您的主目录中创建内容:SHELL=/usr/bin/fish
在 gnome-terminal 配置文件选项中禁用自定义命令。
- 注销并重新登录。
Gnome 终端应该尊重该变量并使用该自定义命令。它在 Ubuntu 16.04.1 上适用于我并解决了工作目录问题。
答案2
对于那些运行 Wayland 会话的人来说,这个解决方法基于设置 SHELL 变量的方法将不起作用,因为 Wayland 不获取任何 shell 文件,包括 .xsessionc、.profile 或 .bashrc。
对我有用的解决方法的一种变体是为 GNOME 终端创建一个自定义启动器,用 env 设置 SHELL 环境变量:
env SHELL=/usr/bin/fish gnome-terminal
答案3
一种解决方法是将以下内容添加到.bashrc
:
if [ -f /usr/bin/fish ]; then
exec /usr/bin/fish
fi
缺点:作为 Fish 用户,您有时需要 POSIX 兼容的 shell。如果你执行bash
上面的 hack 将会给你另一个鱼壳。