Gnome-Terminal

vte.sh 不會將我的 gnome-terminal 目錄保留在新選項卡中

  • November 23, 2014

在 gnome-terminal 中打開新選項卡時,我曾經保留我的工作目錄並希望恢復此功能。我的研究指出我/etc/profile.d/vte.sh在我的~/.zshrc(我使用 Z shell)中進行採購,但這並沒有改變問題,我的新標籤仍然在~.

如何恢復此功能?如有必要,這可能是一個骯髒的黑客。

我的版本

~$ uname -a
Linux konradslaptop2 3.17.2-1-ARCH #1 SMP PREEMPT Thu Oct 30 20:49:39 CET 2014 x86_64 GNU/Linux
~$ gnome-terminal --version
GNOME-Terminal 3.14.2
~$ zsh --version
zsh 5.0.7 (x86_64-unknown-linux-gnu)

我的 ~/.zshrc (最小範例)

. /etc/profile.d/vte.sh
# auto generated by .zsh installation
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then       
   function zle-line-init () {
       printf '%s' "${terminfo[smkx]}"
   }
   function zle-line-finish () {
       printf '%s' "${terminfo[rmkx]}"
   }
   zle -N zle-line-init
   zle -N zle-line-finish
fi

一個非常簡單的解決方法是在您的文件中包含一個函式,該函式~/.zshrc會記住工作目錄並在打開 zsh 時更改為該目錄:

cd $(<>/dev/shm/$USER-pwd)

__cd(){
   \cd "$@"
   pwd >/dev/shm/$USER-pwd
}
alias cd=__cd

我們使用*/dev/shm而不是/tmp來避免磁碟寫入,儘管/tmp可能已經是您系統上的tmpfs*。\cd用來躲避叉子炸彈

如果您希望此功能僅用於 gnome-terminal,您可以包含一個 if 語句來檢查您目前的終端或活動視窗。此外,如果您擔心其他使用者可能會發現您的上一個目錄是什麼,您可以修改$USER-pwdwith的權限chmod

if xprop -id $(xprop -root 32x ' $0' _NET_ACTIVE_WINDOW | awk '{print $NF}') WM_CLASS | grep -q gnome-terminal; then
   cd    $(<>/dev/shm/$USER-pwd)
   chmod 600 /dev/shm/$USER-pwd

   __cd(){
       \cd "$@"
       pwd >/dev/shm/$USER-pwd
   }
   alias cd=__cd
fi

引用自:https://unix.stackexchange.com/questions/167964