Come faccio a far riprendere le sessioni terminali su Lion con iterm2 e tcshrc


2

La mia comprensione è che con Lion le finestre del mio terminale dovrebbero ripristinare il loro stato. Tuttavia, questo non succede per me. Mi chiedo se questo perché uso tcsh invece di bash?

C'è qualcosa che posso fare per far riprendere le mie sessioni su iterm2 da dove erano state interrotte?

Il mio attuale tentativo di farlo è stato quello di utilizzare

 alias precmd 'if ( $?TERM_PROGRAM && ${TERM_PROGRAM} == "iTerm.app" ) /opt/local/libexec/gnubin/echo -ne "\033];$cwd\007"'
 set prompt = '%{\e]2;%~\a%}%S[%m:%c3] %n%#%s '

Ma questo imposta solo le etichette delle schede. L'etichetta della finestra ottiene i nomi di file abbreviati con ~ al posto del nome file completo. Non so se ciò sia legato al mio fallimento nell'ottenere la ripresa del terminale. Ad ogni modo, quando esco e riavvio tutte le finestre e le schede del mio terminale sono di nuovo nella mia directory home.

I punti bonus extra sarebbero una soluzione sensibile all'uso dello slogan.

Non riesco nemmeno a ottenere il corretto comportamento di ripresa con l'Apple Terminal integrato, quando cambio sopra

if ( $?TERM_PROGRAM && ( ${TERM_PROGRAM} == "iTerm.app" || ${TERM_PROGRAM} == "Apple_Terminal") ) then
  alias precmd ' /opt/local/libexec/gnubin/echo -ne "\033];$cwd\007"'
  set prompt = '%{\e]2;%~\a%}%S[%m:%c3] %n%#%s '
endif

Non torno alla stessa directory di lavoro e mentre posso vedere la cronologia dei comandi, non posso usarla (non posso usare ^ P per spostarmi in alto, ad esempio, e il comando history non restituisce nulla). Quindi credo che in qualche modo questo non funzioni con tcsh, al contrario di bash. I miei colleghi mi assicurano che non perdono la directory di lavoro all'uscita dall'applicazione.


3
Lion salva e mostra il contenuto dei buffer di scorrimento indietro (e solo per l'app Terminale integrata - iTerm2 e altri sono soli per supportare la terminazione improvvisa e la ripresa dell'applicazione). Cose come la directory di lavoro e le variabili della shell non vengono mantenute. Stai cercando di utilizzare gli schermi come shell per salvare quel tipo di contenuto mentre il Mac è in esecuzione, ma l'app Terminal è chiusa?
bmike

bash è la shell predefinita su OS X e solo è configurata per impostazione predefinita per coordinarsi con Terminal per ripristinare la directory di lavoro. Puoi vedere il codice che lo fa in /etc/bashrc. Potrebbe essere necessario trovare qualcuno per adattarlo a tcsh. Altrove su Stack Exchange ho pubblicato un codice equivalente per zsh.
Chris Page

1
Per salvare e ripristinare uno stato arbitrario, come le variabili di ambiente, è necessario aggiungere codice agli script di configurazione della shell per gestirlo. Per ogni finestra / scheda del terminale, Terminale imposta una variabile di ambiente $TERM_SESSION_IDsu un ID univoco; il suo valore esatto è soggetto a modifiche, ma attualmente è un UUID. Durante il ripristino, ripristina questo ID. Ad esempio, è possibile utilizzare l'ID per generare un percorso percorso file e salvare i dati in esso, quindi rileggerlo all'avvio della shell. Probabilmente vorrai eliminare periodicamente i dati della vecchia sessione, poiché non sai se una sessione verrà mai ripristinata di nuovo.
Chris Page

Risposte:


3

Potresti aggiungere qualcosa di simile allo script di avvio della tua shell predefinita (il mio è zsh, la maggior parte delle persone usa bash, immagino, quindi potresti dover modificare.)

Ecco il mio po 'di jiggery-pokery sullo schermo (nel mio .zshrc)

# Autoload screen if we aren't in it.  (Thanks Fjord!)
if [[ $STY = '' ]] then screen -xRR; fi

L'ho preso da qualche parte negli interwebs (non ricordo dove, e non so chi sia Fjord, ma bravo con lui.

Con questo puoi chiudere la finestra iTerm e riprenderà da dove eri rimasto quando la riapri. Consiglio vivamente di leggere anche la pagina man dello schermo.


Funziona se hai più di una finestra iTerm aperta? In che modo più sessioni dello schermo si ricollegano a più sessioni iTerm?
Robert P. Goldman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.