Gnome-terminal 自定义命令和动态工作目录

Gnome-terminal 自定义命令和动态工作目录

这是一种跟进另一个问题

我在 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 变量也有效。它没有我的其他答案的缺点。详细信息如下:

  1. .xsessionrc在您的主目录中创建内容:

    SHELL=/usr/bin/fish
    
  2. 在 gnome-terminal 配置文件选项中禁用自定义命令。

  3. 注销并重新登录。

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 将会给你另一个鱼壳。

相关内容