gnome-terminal: Verzeichnis in neuem Tab im Auge behalten

gnome-terminal: Verzeichnis in neuem Tab im Auge behalten

Ich verwende Arch Linux und wenn ich eine neue Registerkarte im Terminal öffne, geht es immer zu $HOME. Wie kann ich es so einrichten, dass beim Öffnen einer neuen Registerkarte die Shell in dem Verzeichnis geöffnet wird, in dem ich mich zuvor befunden habe?

Antwort1

Da ist einInsektim Zusammenhang mit diesem Problem

Sie müssen lediglich die folgende Zeile zu Ihrem .bashrcoder hinzufügen .zshrc:

. /etc/profile.d/vte.sh

Zumindest unter Arch prüft das Skript, ob Sie Bash oder Zsh ausführen, und wird beendet, wenn dies nicht der Fall ist.

Antwort2

Könnte auch CrosspostenDasHacky-Lösung vom Superuser:

[Dies] speichert nach jedem Befehl den aktuellen Ordner in einer Datei (schadet meiner Meinung nach nicht allzu sehr) und öffnet ein neues Terminal im gespeicherten aktuellen Ordner.

Folgendes hinzufügen zu.zshrc[oder.bashrc]

# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"

Beachten Sie, dass Sie dadurch auch in das zuletzt verwendete Verzeichnis gelangen, wenn Sie ein neuesFenster.

Antwort3

@swalog hat mich inspiriert in seinemKommentarum alle unnötigen Teile zu entfernen, vte.shohne die Eingabeaufforderung oder den Terminaltitel zu ändern. Beachten Sie, dass ich nicht verwende zsh, daher habe ich zsh-bezogenen Code entfernt.

# 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, see <http://www.gnu.org/licenses/>.

# 28 Sep 2019: Tukusej’s Sirs modified this by stripping down all unnecessary parts for his usage
# (src: https://unix.stackexchange.com/questions/93476/gnome-terminal-keep-track-of-directory-in-new-tab#comment219157_93477)

# 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
)

__vte_prompt_command() {
    local command=$(HISTTIMEFORMAT= history 1 | sed 's/^ *[0-9]\+ *//')
    command="${command//;/ }"
    local pwd='~'
    printf "\033]7;file://%s%s\007" "${HOSTNAME:-}" "$(__vte_urlencode "${PWD}")"
}

case "$TERM" in
    xterm*|vte*)
        [ -n "$BASH_VERSION" ] && PROMPT_COMMAND="${PROMPT_COMMAND};__vte_prompt_command"
        ;;
esac

verwandte Informationen