在 Oh-My-Zsh 內設定命令列標題

Wi1dcard發表於2019-06-20

前些天給命令列設定標題遇到一奇葩問題,最終除錯發現是 Oh-My-Zsh 的鍋。

在啟用 Oh-My-Zsh 後,使用命令:

echo -e "\033];this is the title\007"

居然無法修改終端視窗標題?不過,仔細觀察還是會注意到標題「閃」了一下,說明還是存在效果,只不過被某種「神祕力量」重設了回來,

最開始懷疑是不是 iTerm2 之類的鍋,換成 Terminal 問題依舊。

隨後開始嘗試使用 bash 執行上文的命令,正常工作。因此問題應該出在 Zsh 周邊。

於是使用 zsh -d -f(即不載入任何 RC 檔案,最原始的 zsh)再次除錯,可以正常工作。所以罪魁禍首應當就隱藏在 ~/.zshrc 之中。

最終經過排查,發現是由於 Oh-My-Zsh 的一個名為 Auto title 的功能造成的,參考:https://github.com/robbyrussell/oh-my-zsh/...

大致解決方案有兩種:

  1. 在 .zshrc 內寫入環境變數 DISABLE_AUTO_TITLE="true"
  2. 因為我的最終目的是修改而非禁用,故亦可直接修改 ZSH_THEME_TERM_TITLE_IDLE 環境變數作為空閒時的標題,參考 這段原始碼

最終,我在 ~/.zshrc 末尾加入一行:

ZSH_THEME_TERM_TITLE_IDLE="%~" # 將當前工作目錄短路徑設為終端標題

注意,以上語句應在 Oh-My-Zsh 載入之後,否則將會被 這段原始碼 覆蓋。

問題解決。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Former WinForm and PHP Engineer. Now focus on #DevSecOps and global networking.

相關文章