我经常从终端的不同选项卡启动与服务器的终端会话。我想创建一个函数,在开始会话之前它会更改选项卡的标题,以便我可以轻松识别哪个选项卡打开了哪个会话。
让我们假设我的会话是 ssh 会话。当我输入终端
fn myserver
其中 fn 是在 ~/.bashrc 中定义的函数:
function fn() {
set-title "$1"
ssh $1
}
function set-title() {
if [[ -z "$ORIG" ]]; then
ORIG=$PS1
fi
TITLE="\[\e]2;$*\a\]"
PS1=${ORIG}${TITLE}
}
终端启动会话,并且仅在 ssh 会话结束后更改选项卡的标题。我猜这是因为会话在 fn 函数中打开,并且只有当函数返回时 PS1 才会实现。如何在会话开始前更改标题/更新 PS1 变量?