Gnome-terminal y Zsh: mantenga el directorio actual en una nueva pestaña / ventana

12

Estoy ejecutando gnome 3.10.1 en Arch con Zsh. Me enfrento al problema de que cuando creo una nueva pestaña o ventana desde una ventana de terminal, restablece el directorio actual a mi directorio de inicio.

Ya he intentado esto: gnome-terminal: realiza un seguimiento del directorio en una nueva pestaña , pero no funcionó.

Pensé que tal vez podría ser alguna configuración en mi .zshrcarchivo, así que lo limpié y puse solo la siguiente línea:

. /etc/profile.d/vte.sh

Sin embargo, no funcionó como se esperaba.

Sí, este archivo existe y aquí está su contenido:

# 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

Esto realmente me está molestando ...

¿Hay alguna solución?

Henrique Barcelos
fuente
2
Está relacionado con gnome-terminal, no con zsh. Parece ser un error reportado , aunque el error detrás del enlace es el error de ubuntu-gnome.
Risto Salminen
1
has intentado terminator?
RSFalcon7
Sí, el terminador funciona bien, pero, por ejemplo, la nautilus-open-terminalextensión siempre abre gnome-terminal, no he podido cambiarlo ...
Henrique Barcelos
1
Solo quería señalar que tenía que reiniciar gnome-terminal después de obtener vte.sh en mi archivo rc. No funcionó simplemente guardándolo y abriendo una nueva pestaña / ventana ... (usando bash / arch / gnome3.10)
The Silent Boatman

Respuestas:

16

No sé si aún se encuentra con este problema, pero descubrí que mi problema era que estaba ejecutando / bin / zsh como un comando personalizado en mi perfil de terminal. Deshabilitar eso solucionó el problema para mí, y aún mantenía zsh como mi shell principal.

Perfil terminal

Daniel Bodnar
fuente
Resolvió exactamente el problema para mí usando Fedora, ¡muchas gracias!
Sven Hager
1
cambiar eso significaría usar el bash predeterminado en lugar de zsh. Entonces, ¿cómo soluciona eso el problema?
Alfie
@Alfie El usuario no está utilizando su shell predeterminado (probablemente bash). Eso significa que el comando que se ejecuta para configurar el indicador (configurado al iniciar sesión /etc/profile.d/vte.sh) no es el correcto y el terminal no conoce el directorio actual del shell.
xhienne
La captura de pantalla ya no está actualizada. La segunda opción ya no existe; marcando el primero hizo el truco. Es el valor predeterminado, pero tengo que configurar ZSH como su shell predeterminado con chsh, supongo.
slhck
4

Parece que tiene que habilitar la opción "Ejecutar comando como un shell de inicio de sesión" para que funcione como debería.

La impresión de abajo está en portugués, pero esta es la configuración que tengo para que funcione.

Captura de pantalla

Henrique Barcelos
fuente
esto funcionaría, porque no estás usando zsh
Alfie