Gnome-Terminal und Zsh: Behalten Sie das aktuelle Verzeichnis auf einem neuen Tab / Fenster

12

Ich verwende Gnome 3.10.1 auf Arch mit Zsh. Ich habe das Problem, dass beim Erstellen eines neuen Tabs oder Fensters aus einem Terminalfenster das aktuelle Verzeichnis auf mein Ausgangsverzeichnis zurückgesetzt wird.

Ich habe dies bereits versucht: gnome-terminal: Verfolge das Verzeichnis in einem neuen Tab , aber es hat nicht funktioniert.

Ich dachte, dass es vielleicht eine Konfiguration in meiner .zshrcDatei sein könnte, also habe ich sie bereinigt und nur die folgende Zeile eingefügt :

. /etc/profile.d/vte.sh

Es funktionierte jedoch nicht wie erwartet.

Ja, diese Datei existiert und hier ist ihr Inhalt:

# 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

Das nervt mich wirklich ...

Gibt es eine Lösung?

Henrique Barcelos
quelle
2
Es ist verwandt mit gnome-terminal, nicht mit zsh. Es scheint ein gemeldeter Fehler zu sein , obwohl der Fehler hinter dem Link der Fehler von Ubuntu-Gnome ist.
Risto Salminen
1
haben Sie versucht terminator?
RSFalcon7
Ja, Terminator funktioniert gut, aber zum Beispiel, nautilus-open-terminalErweiterung immer offen Gnome-Terminal, ich konnte es nicht ändern ...
Henrique Barcelos
1
Ich wollte nur darauf hinweisen, dass ich gnome-terminal neu starten musste, nachdem ich vte.sh in meiner rc-Datei bezogen hatte. Hat nicht funktioniert, indem man es einfach gespeichert und einen neuen Tab / ein neues Fenster geöffnet hat. (Mit bash / arch / gnome3.10)
The Silent Boatman

Antworten:

16

Ich weiß nicht, ob dieses Problem immer noch auftritt, aber ich habe festgestellt, dass ich / bin / zsh als benutzerdefinierten Befehl in meinem Terminalprofil ausgeführt habe. Durch Deaktivieren wurde das Problem für mich behoben - und zsh wurde weiterhin als primäre Shell verwendet.

Terminalprofil

Daniel Bodnar
quelle
Ich habe das Problem mit Fedora genau gelöst, vielen Dank!
Sven Hager
1
dies zu ändern würde bedeuten, die Standard-Bash anstelle von zsh zu verwenden. Wie behebt das das Problem?
Alfie
@Alfie Der Benutzer verwendet (wahrscheinlich bash) nicht seine Standard-Shell . Dies bedeutet, dass der Befehl zum Festlegen der Eingabeaufforderung (eingerichtet beim Anmelden /etc/profile.d/vte.sh) nicht der richtige ist und das Terminal das aktuelle Verzeichnis der Shell nicht kennt.
Xhienne
Der Screenshot ist nicht mehr aktuell. Die zweite Option existiert nicht mehr; Das Ankreuzen des ersten hat den Trick getan. Es ist die Standardeinstellung, aber Sie müssen ZSH als Ihre Standard-Shell festlegen, nehme chshich an.
Slhck
4

Anscheinend müssen Sie die Option "Befehl als Anmeldeshell ausführen " aktivieren , damit sie ordnungsgemäß funktioniert.

Der Druck unten ist auf Portugiesisch, aber dies ist die Konfiguration, mit der ich arbeiten muss.

Bildschirmfoto

Henrique Barcelos
quelle
Dies würde funktionieren, weil Sie nicht zsh
Alfie