Domanda:
Aprire una nuova scheda Terminale nella directory di lavoro corrente non funziona
aaragon
2014-09-11 15:48:28 UTC
view on stackexchange narkive permalink

Nelle preferenze del terminale puoi trovare un'opzione per aprire nuove finestre e schede nella directory di lavoro corrente. Eppure c'è un messaggio che dice che i programmi notificano a Terminal l'attuale directory di lavoro usando sequenze di scape, che non so cosa significhi. Ma il terminale stesso non lo sta facendo, poiché vorrei creare una nuova scheda quando premo ⌘ + T per aprire nella stessa directory di lavoro (non ~ /). Ho trovato questo post ma non affronta questo problema. Ecco una figura con le opzioni: enter image description here

Tre risposte:
aaragon
2014-09-12 14:25:18 UTC
view on stackexchange narkive permalink

Quindi ho trovato il problema con il terminale e sto postando la risposta sperando che possa aiutare gli altri. Il problema era nella definizione della variabile d'ambiente PROMPT_COMMAND . Ho cambiato la sua definizione da

  export PROMPT_COMMAND = 'history -n;'  

a

  export PROMPT_COMMAND = " $ {PROMPT_COMMAND: + $ PROMPT_COMMAND;} history -n " 

aggiunto alla fine del PROMPT_COMMAND esistente invece e questo ha risolto il problema.

Destra. Il contenuto di `PROMPT_COMMAND` viene eseguito dalla shell ogni volta che viene visualizzato il prompt. Il comportamento del Terminale che stai cercando dipende dal fatto che quella variabile sia impostata su una funzione chiamata `update_terminal_cwd`, ​​che emette la tua directory di lavoro corrente come un URL in un modo che viene intercettato dal Terminale in modo che sappia dove ti trovi. Stavi sovrascrivendo quell'impostazione.
Grazie, questo ha risolto il mio problema!Ho una domanda sulla tua bash: cosa significa "+ $ PROMPT_COMMAND;"parte fare?Ottengo errori quando utilizzo questa sintassi ...
> $ echo $ PROMPT_COMMAND > update_terminal_cwd;;spwd > -bash: PROMPT_COMMAND: riga 1: errore di sintassi vicino al token imprevisto `; ' > -bash: PROMPT_COMMAND: riga 1: `update_terminal_cwd;;spwd " > $
Ho dovuto cambiarlo in: > esporta PROMPT_COMMAND = "$ PROMPT_COMMAND "
(Ci scusiamo per la scarsa formattazione, lo scambio di stack non lo rende facile!)
Nota: "export" non è necessario e non è desiderabile con le variabili di shell - variabili che sono specifiche del comportamento della shell e non usate da altri programmi richiamati dalla shell.Non è necessario esportare le variabili di shell, perché le sotto-shell interattive eseguiranno lo script di avvio e generalmente non è desiderabile esportare le variabili in programmi eseguiti dalla shell a meno che non si intenda utilizzarli.
Ciò si traduce in un errore di sintassi e non risolve il problema.
ccristi
2016-06-07 22:32:13 UTC
view on stackexchange narkive permalink

Ho notato che questo tipo di comportamento si riproduce anche quando si hanno spazi vuoti nel nome host.

Correzioni $ sudo scutil --set HostName 'no-whitespace-name' questo problema.

Tony Williams
2014-09-11 16:24:56 UTC
view on stackexchange narkive permalink

Bene, Terminal aprirà sicuramente una nuova scheda o finestra nella directory corrente se ti trovi al prompt in bash tutte le cose funzionano bene.

Sto eseguendo la versione 2.4 del terminale su 10.9.4 e funziona perfettamente sia per le nuove schede che per le finestre.

Se non funziona, qualcosa sta sconvolgendo le cose. Prova a spostare .profile , .bash_profile e .bashrc nel caso in cui qualcosa al loro interno stia sconvolgendo bash.

Una volta che hai scoperto quale file sta causando il problema, puoi scoprire quale parte è il problema usando un "metodo di dimezzamento". Taglia la lima approssimativamente a metà e sposta quella metà indietro. Questo ti dirà quale metà lo sta facendo. Ripeti con il taglio a metà e spostandoti fino a quando non hai ridotto a poche righe o giù di lì puoi quindi porre di nuovo la tua domanda.

Controllare anche il file `.bash_profile`.
Hai ragione, qualcosa sta sconvolgendo il Terminale, perché se rinomino il mio `.bash_profile` in un altro file, tutto funziona bene. Qualche idea su cosa succederebbe all'interno di `.bash_profile`? Il mio file è abbastanza grande.
@aaragon potrebbe controllare i comandi `cd`:` cat ~ / .bash_profile | grep cd`
Questo è il risultato: `$ cat ~ / .bashrc | grep cd # corregge automaticamente i nomi di directory digitati in modo errato su cdshopt -s cdspell # Se impostato, si presume che un argomento del comando incorporato cd che non sia una directory sia il nome di una variabile il cui valore è la directory da modificare toshopt -s cdable_varsalias. . = 'cd ../' # Torna indietro di 1 livello di directory alias cd .. = 'cd ../' # Torna indietro di 1 livello di directory (per chi scrive velocemente) alias ... = 'cd ../../' # Torna indietro di 2 livelli di directoryalias ~ = "cd ~" # ~: Vai a Home`
Presumo che tu non abbia scritto tutto il tuo file .bash_profile da solo per molti anni, quindi ti suggerisco di prendere il file e ridurlo alle sole cose che capisci completamente e _realmente_ necessarie fino a quando l'app Terminal non si comporta. Quindi aggiungi lentamente le cose che potresti _piace avere_ finché non si rompono di nuovo. Questo è il profilo di base e il debug del file di accesso.
Ho trovato il problema e ho pubblicato la soluzione. Grazie @TonyWilliams.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...