1

我有一个脚本,可以让我更轻松地连接到我需要通过 SSH 连接到的许多服务器。它运行良好,除了终端的标题(在我的情况下为 Konsole 选项卡标题)被设置为我的脚本名称“() ./scripts/ssh”。我更新了脚本并添加了一个调用来qdbus设置 Konsole 选项卡标题。它可以工作,但只有在 SSH 会话关闭/脚本完成之后。

如何使qdbus命令立即生效?

剧本

#!/bin/bash

ENV=$1
HOST=$2
USER=${3:-my_username}

if [ -z ${ENV} ]; then
  echo "First parameter must be the environment."
  exit -1
fi

if [ -z ${HOST} ]; then
  echo "Second parameter must be the host."
  exit -1
fi

case "$ENV" in
  # cases to determine proper hostname from abbreviated input
  *)
    echo "Unsupported environment: ${ENV}"
    exit -1
esac

HOST="${HOST}.${ENV}.net"

# set tab title
qdbus >/dev/null "${KONSOLE_DBUS_SERVICE}" ${KONSOLE_DBUS_SESSION} setTabTitleFormat 0 "${USER}@${HOST}"

echo "Connecting to ${HOST} as ${USER} ..."
ssh ${USER}@${HOST}

# revert tab title -- COMMENTED OUT FOR TESTING
# qdbus >/dev/null "${KONSOLE_DBUS_SERVICE}" ${KONSOLE_DBUS_SESSION} setTabTitleFormat 0 "%w"

当我运行我的脚本...

  1. 选项卡文本更新为() ./scripts/ssh
  2. 显示“正在连接”回声
  3. 我照常使用 SSH
  4. 选项卡文本未更新

当我退出 SSH 会话时,选项卡文本设置"${USER}@${HOST}"为上面的命令(之前ssh)。

我添加/注释了一行,它将标签文本恢复到我运行脚本之前的状态(我认为)。

4

0 回答 0