如何使终端标题粘贴在 Mac 上

Cla*_*ied 0 ssh unix terminal.app macbook-pro title

我不确定这是否是我的 mac 的问题,我是它的菜鸟,或者它是否是我正在使用的服务器的设置。

我正在做的是这样的:

  1. 在终端中打开一个新窗口
  2. 通过 SSH 连接到 CentOS 服务器。我的登录 shell 是 bash。
  3. 点击外壳->编辑标题
  4. 将标题和选项卡标题更改为 abc123。它在终端标题栏中反映为 abc123-abc123-ssh-100x24
  5. 在终端中,运行 'sudo su' 将用户更改为 root。请注意,标题现在已更改为 root@blah:/home/myuser-ssh-100x24。如果我注销 root,标题名称仍然是这个新名称。

你如何使标题名称坚持为 abc123 并且当我 su 给其他用户时不改变?在此先感谢您的帮助。

Dan*_*eck 6

标题是从您要连接的服务器设置的。机会是,/etc/bashrc或类似的文件定义PROMPT_COMMAND来设置标题。在 CentOS 6 上,它看起来像这样:

  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
    xterm*)
        if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
            PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
        else
            PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
        fi
        ;;
[... more of the same ...]
      esac
  fi
Run Code Online (Sandbox Code Playgroud)

为了防止这种情况,请确保PROMPT_COMMAND=root您通过 SSH 连接的服务器上设置in和您自己的 bash 配置文件(例如~/.bashrc)。

或者,添加PROMPT_COMMAND/etc/sudoers( env_keep) 和/etc/ssh/sshd_config( AcceptEnv) 以从本地系统继承它,并将其设置为不影响标题栏的值。

在这种特定情况下,您还可以设置您的终端声明一个不同的终端,因为这仅xterm*在 CentOS 上设置(终端»首选项...»设置»(选择配置文件)»高级»声明终端为)。


Terminal.app 似乎不允许锁定标题 - 您可能希望更改如上所述设置它的配置。您可以随时查看不同的终端,例如 iTerm。即使标题更改,它也支持在标题中保留配置文件名称


这是一个肮脏的黑客,可以在不更改您通过 SSH 连接到的所有服务器的配置的情况下保留您的终端标题:

在通过 SSH 连接到 Linux 机器的同一个 shell 中,在执行此操作之前,运行以下命令:

while true ; do printf "\033]0;%s\007" "My Terminal Title" ; sleep 1 ; done &
Run Code Online (Sandbox Code Playgroud)

这将在后台执行一个循环,每秒一次将终端标题更改为我的终端标题,覆盖在您的 SSH 会话中执行的任何更改。

一旦大功告成,在你的shell使用作业控制,以阻止它(jobs以及kill %1如果它是第一个作业),或fg将其带到前景,并与取消Ctrl-C