vte.shは私のgnome-terminalディレクトリを新しいタブに保持しません。

vte.shは私のgnome-terminalディレクトリを新しいタブに保持しません。

私はgnome-terminalで新しいタブを開くときに作業ディレクトリを維持しようとしましたが、この機能を再度インポートしたいと思います。私の研究/etc/profile.d/vte.shでは、私のソーシング(Zシェルを使用)を指摘しましたが、~/.zshrc問題は変わらず、新しいタブがまだそこにありました~

この機能をどのように復元できますか?必要に応じて、これは汚れたハッキン​​グになる可能性があります。

私のバージョン

~$ 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

答え1

~/.zshrc非常に簡単な回避策は、作業ディレクトリを覚えてzshが開かれたときにそれを変更する関数をファイルに含めることです。

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

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

私たちは使用/dev/shm変える/tmpディスクの書き込みを防ぐために/tmpもう一つかもしれない一時ファイルシステムあなたのシステムから。\cd避けるために使用されるフォーク爆弾

gnome-terminalでのみこの機能を使用するには、ifステートメントを含む現在の端末またはアクティブウィンドウを確認できます。また、他のユーザーが最後のディレクトリが何であるかを知っている可能性がある場合は、権限を変更できます$USER-pwdchmod

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

答え2

正確に何を復元したいのかわかりません(下記参照)。

gnome-terminal別のディレクトリで開くを開始するには、オプションを使用してディレクトリを指定できます。

gnome-terminal --working-directory=/tmp

もちろん、実行しcdてからシェルを起動するカスタム起動コマンドとしてスクリプトを使用できますが、これは良いアプローチのようには聞こえません。


新しいタブ操作をトリガするときに、新しいタブのシェルのデフォルトディレクトリが現在のタブの現在のディレクトリに設定されている場合:これは私に効果的であるため、ヒントのみを提供できます。以前のバージョンGNOME Terminal 3.6.2

私はこれがディレクトリを設定するスクリプトではないと確信しています/etc/profile.d/vte.sh。私のバージョンではうまくいきます。スクリプトには関連するコードは含まれておらず、使用したことはありません。

ターミナルプログラム自体は、シェルプロセスをフォークする前にディレクトリを設定できます。
しかし、実際にはこれを行う必要さえありません。以前と同じディレクトリを持ちたいです。必要なのはディレクトリに全く触れないだけです。

つまり、問題を説明するバグがあります。
gnome-terminal: バグ 697475 - 新しいタブが前のタブと同じディレクトリで開かない
議論が長く、要約されていません。vte.shそこで議論され、スキップすると修正されましたが、まだ完全にリリースされていないようです。

答え3

2022年アップデート:

  • インクルードは今機能しますが、新しい場合にのみ機能/etc/profile.d/vte.shします。~/.zshrcタブ、新規には適していませんWindows
  • 以下にレプリケートされた@admirabilisの回避策は以前は機能していましたが、今度はタブキーを使用して目次補完機能を停止します。
  • 上記の両方とも、zsh が Gnome Terminal で「カスタムコマンド」で構成され、zsh が chsh を使用してデフォルトシェルに設定されている場合に当てはまります。
cd $(<>/dev/shm/$USER-pwd)

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

バージョン

興味深いことに、Gnome TerminalとZSHのメジャーバージョンは8年前と同じです。

~$ uname -a
Linux archlinux 5.19.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 29 Aug 2022 15:51:05 +0000 x86_64 GNU/Linux
~$ gnome-terminal --version
# GNOME Terminal 3.44.1 using VTE 0.68.0 +BIDI +GNUTLS +ICU +SYSTEMD
~$ zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)

関連情報