Gnome-terminal dan Zsh: simpan direktori saat ini di tab / jendela baru

12

Saya menjalankan gnome 3.10.1 di Arch dengan Zsh. Saya menghadapi masalah itu bahwa ketika saya membuat tab atau jendela baru dari jendela terminal, itu me-reset direktori saat ini ke direktori home saya.

Saya sudah mencoba ini: gnome-terminal: melacak direktori di tab baru , tetapi tidak berhasil.

Saya pikir itu mungkin beberapa konfigurasi pada .zshrcfile saya , jadi, saya membersihkannya dan meletakkan baris berikut:

. /etc/profile.d/vte.sh

Namun, itu tidak berfungsi seperti yang diharapkan.

Ya, file ini ada dan ini isinya:

# Copyright © 2006 Shaun McCance <[email protected]>
# Copyright © 2013 Peter De Wachter <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Not bash or zsh?
[ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ] || return 0

# Not an interactive shell?
[[ $- == *i* ]] || return 0

# Not running under vte?
[ "${VTE_VERSION:-0}" -ge 3405 ] || return 0

__vte_urlencode() (
  # This is important to make sure string manipulation is handled
  # byte-by-byte.
  LC_ALL=C
  str="$1"
  while [ -n "$str" ]; do
    safe="${str%%[!a-zA-Z0-9/:_\.\-\!\'\(\)~]*}"
    printf "%s" "$safe"
    str="${str#"$safe"}"
    if [ -n "$str" ]; then
      printf "%%%02X" "'$str"
      str="${str#?}"
    fi
  done
)

# Print a warning so that anyone who's added this manually to his PS1 can adapt.
# The function will be removed in a later version.
__vte_ps1() {
  echo -n "(__vte_ps1 is obsolete)"
}

__vte_osc7 () {
  printf "\033]7;file://%s%s\a" "${HOSTNAME:-}" "$(__vte_urlencode "${PWD}")"
}

__vte_prompt_command() {
  printf "\033]0;%s@%s:%s\007%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}" "$(__vte_osc7)"
}

case "$TERM" in
  xterm*|vte*)
    [ -n "$BASH_VERSION" ] && PROMPT_COMMAND="__vte_prompt_command" 
    [ -n "$ZSH_VERSION"  ] && chpwd_functions+=(__vte_osc7)
    ;;
esac

true

Ini benar-benar menggangguku ...

Apakah ada solusi?

Henrique Barcelos
sumber
2
Ini terkait dengan terminal gnome, bukan ke zsh. Tampaknya ini adalah bug yang dilaporkan , meskipun bug di balik tautan tersebut adalah bug ubuntu-gnome.
Risto Salminen
1
Anda mencoba terminator?
RSFalcon7
Ya, terminator berfungsi dengan baik, tetapi, misalnya, nautilus-open-terminalekstensi selalu membuka gnome-terminal, saya belum dapat mengubahnya ...
Henrique Barcelos
1
Hanya ingin menunjukkan bahwa saya harus me-restart gnome-terminal setelah sumber vte.sh di file-rc saya. Tidak berfungsi hanya dengan menyimpannya dan membuka tab / jendela baru .. (menggunakan bash / arch / gnome3.10)
The Silent Boatman

Jawaban:

16

Saya tidak tahu apakah Anda masih mengalami masalah ini, tetapi saya menemukan masalah saya adalah saya menjalankan / bin / zsh sebagai perintah khusus di profil terminal saya. Menonaktifkan yang memperbaiki masalah bagi saya - dan masih menjadikan zsh sebagai shell utama saya.

Profil Terminal

Daniel Bodnar
sumber
Memecahkan masalah dengan tepat untuk saya menggunakan Fedora, terima kasih banyak!
Sven Hager
1
mengubah itu berarti menggunakan bash default alih-alih zsh. jadi bagaimana cara mengatasi masalah ini?
Alfie
@ Alfie Pengguna tidak menggunakan shell default mereka (mungkin bash). Itu berarti bahwa perintah yang dijalankan untuk mengatur prompt (atur saat masuk /etc/profile.d/vte.sh) bukan yang benar dan terminal tidak mengetahui direktori shell saat ini.
xhienne
Tangkapan layar tidak up to date lagi. Opsi kedua tidak ada lagi; mencentang yang pertama berhasil. Itu default, tetapi Anda harus mengatur ZSH sebagai shell default Anda chsh, saya kira.
slhck
4

Sepertinya Anda harus mengaktifkan opsi "Jalankan perintah sebagai shell masuk" untuk membuatnya berfungsi seperti seharusnya.

Cetak di bawah ini dalam bahasa Portugis, tetapi ini adalah konfigurasi yang saya gunakan untuk membuatnya.

Tangkapan layar

Henrique Barcelos
sumber
ini akan berhasil, karena Anda tidak menggunakan zsh
Alfie