16 votos

Cómo hacer que Mac Terminal restaure los directorios de trabajo al reiniciar

Utilizo el Terminal de Mac con un puñado de pestañas, cada una asignada a un directorio de trabajo diferente. Lo tengo configurado para abrir nuevas ventanas con el mismo directorio de trabajo. Sin embargo, cuando salgo de Terminal, y lo reinicio reconstruye todas las pestañas, sus nombres, incluso me muestra la última salida en la ventana pero se queda en el directorio home del usuario y no restaura el último directorio de trabajo de cada pestaña.

¿Qué estoy haciendo mal? ¿Puede esto ser causado por algún ajuste en el ~/.bash_profile ?

0 votos

Creo que puede encontrar lo que busca en este hilo. apple.stackexchange.com/questions/863/

1 votos

Entonces, ¿me equivoco al suponer que esto debería ser compatible desde el principio?

15voto

Yasmine Mustafa Puntos 21

(Como referencia, estamos hablando de la función Reanudar de Mac OS X Lion 10.7 y posteriores).

Terminal restaura automáticamente el directorio de trabajo si está utilizando el shell por defecto, bash. Si utiliza otro shell, deberá adaptar el código en /etc/bashrc para enviar una secuencia de escape para comunicar el directorio de trabajo a Terminal, de modo que pueda restaurar el directorio más tarde para Reanudar. Si está usando zsh, vea mi respuesta a Reanudar Zsh-Terminal (OS X Lion) en el que incluyo el código apropiado para zsh.

Si tiene un ~/.bash_profile o ~/.bashrc puede que necesite asegurarse de que no está deshaciendo el comportamiento por defecto modificando /etc/bashrc 's personalizaciones. En particular, establece el PROMPT_COMMAND para enviar la secuencia de escape en cada pregunta. Si personaliza esa variable, tendrá que anteponer o añadir su código al valor actual, por ejemplo

PROMPT_COMMAND="<your code here>;$PROMPT_COMMAND"

También, en general, ~/.bash_profile debe ejecutar ~/.bashrc :

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

1 votos

Gracias por la respuesta pero no consigo que funcione. He quitado mi .bashrc (aunque no pude ver ninguna personalización del comando prompt. Ahora hago lo siguiente 1. 1. Abrir una nueva ventana de Terminal (se abre en el directorio home de mi usuario) 2. cd Documentos 3. Salir de Terminal Salir de Terminal 4. Abrir Terminal 5. La ventana se vuelve a abrir mostrando la salida del cambio de directorio, pero sigue estando en el directorio personal del usuario.

0 votos

@OliverGierke Terminal crea conchas de inicio de sesión, por lo que también comprobar si hay ~/.bash_profile , ~/.bash_login y ~/.profile .

0 votos

No tengo los dos últimos, el primero ahora ejecuta ~/.bashrc como sugiere en su respuesta.

3voto

yagudaev Puntos 121

Si utiliza Bash-It, es posible que se encuentre con el problema de $PROMPT_COMMAND siendo sobrescrita por ella.

Como se ha mencionado es utilizado por OS X para restaurar cwd en nuevas pestañas. Bash debería añadir valores, no anularlos.

Pero una solución por ahora sería añadir la siguiente línea a su ~/.bash_profile

source $BASH_IT/bash_it.sh
export PROMPT_COMMAND="$PROMPT_COMMAND;update_terminal_cwd;"

Para obtener más información, consulte el gestor de incidencias: https://github.com/revans/bash-it/issues/240

Y la referencia de Apple para ello https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/sh.1.html

1voto

Lea M Puntos 135

Escribí un entrada del blog sobre cómo hacer esto para csh/tcsh antes de que descubriera esta respuesta; si alguien más viene aquí buscando una solución para esos shells, aquí está:

if ("$?TERM_PROGRAM") then
  if ("$TERM_PROGRAM" == "Apple_Terminal") then
    alias precmd 'printf "\033]7;%s\a" "file://$host$cwd:ags/ /%20/"'
  endif
endif

Añádelo a tu .cshrc o .tcshrc según proceda. (La sentencia if externa es necesaria para evitar un error al iniciar sesión de forma remota, como con ssh. Tiene que ser una sentencia separada debido a las reglas de expansión de variables en tcsh).

Al igual que el soporte bash integrado de Apple, esta solución no utiliza programas externos, salvo printf a costa de escapar sólo de los espacios. Si necesitas escapar otros caracteres especiales, tendrás que esforzarte un poco más para encontrar una solución más completa.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X