Perché l'icona della cartella nel mio Terminale presenta un punto interrogativo sovrapposto?


16

Di tanto in tanto, noto che l'icona della cartella nella barra del titolo di una delle finestre del mio Terminale presenta un punto interrogativo sovrapposto, ad esempio questo:

inserisci qui la descrizione dell'immagine

Cosa significa questo? Non sembra avere alcun effetto o problema che ho notato - sono solo curioso.

Sto usando OS X 10.8 (Mountain Lion).

Risposte:


18

Il punto interrogativo (e le voci di menu popup disabilitate) indicano che Terminal pensa che la directory di lavoro si trovi su un computer remoto, e quindi non è possibile accedervi nel Finder utilizzando il menu popup. Se guardi l'ultimo elemento nel menu a comparsa (Comando-clic sull'icona "proxy") vedrai il computer / host su cui Terminal pensa che la directory di lavoro sia accesa. Dovresti scoprire che non è il nome corrente del computer.

Se stai usando bash (la shell predefinita su macOS), per impostazione predefinita invia una sequenza di controllo al terminale ad ogni prompt per dire a Terminal la directory di lavoro corrente. Poiché le sequenze di controllo possono provenire da computer locali o remoti, invia un URL di schema "file:" che include il nome host e Terminal verifica che il nome sia mappato al computer corrente. In caso contrario, Terminal disattiva le voci di menu a comparsa del percorso, poiché non corrispondono alle directory locali.

Puoi vedere il codice che invia la sequenza di controllo in /etc/bashrc_Apple_Terminal(o /etc/bashrcnelle versioni precedenti di macOS).

[Nota che se non stai usando bash o l'hai personalizzato in modo che non si verifichi il comportamento predefinito, ma la tua shell (o qualche altro programma che stai eseguendo) sta inviando sequenze di controllo per impostare la finestra o la scheda ( icona) titolo, il Terminale lo esaminerà per vedere se contiene quello che sembra un nome di percorso, quindi verifica se corrisponde a un nome di percorso locale valido. In caso contrario, non visualizza affatto l'icona del proxy finestra.]

Uno scenario in cui Terminal non riesce a riconoscere che l'URL "file:" si trova sull'host corrente è se si modifica la configurazione di rete mentre è in esecuzione una shell. Un caso comune è mettere un computer portatile in sospensione e trasferirsi in un'altra posizione, quindi svegliarlo. Il nome e l'indirizzo dell'host locale saranno cambiati, ma la $HOSTNAMEvariabile di ambiente della shell ha ancora il vecchio nome host, ed è quello che invia nella sequenza di controllo. Per risolvere questo problema, aggiorna la variabile d'ambiente con:

 HOSTNAME=$(hostname)

Un altro scenario è quello in cui si esce da Terminal, si modificano le configurazioni di rete, quindi si apre Terminal con Resume abilitato. Il terminale ripristinerà le finestre e le schede, insieme all'ultimo URL della directory di lavoro che ciascuno è stato inviato. Se ci si imbatte in questo caso, $HOSTNAMEsarà aggiornato, poiché avvia una nuova shell, ma Terminal può comunque avere un URL non aggiornato fino a quando non si ottiene la shell per aggiornarlo di nuovo. Se la visualizzazione del prompt dei comandi non risolve il problema, provare a cambiare directory con cdper ottenere la shell per aggiornarlo.

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.