17 votes

Pourquoi l'icône du dossier dans mon terminal est-elle recouverte d'un point d'interrogation ?

De temps en temps, je remarque que l'icône de dossier dans la barre de titre d'un de mes Terminal Windows est surchargée d'un point d'interrogation, par exemple celui-ci :

enter image description here

Qu'est-ce que cela signifie ? Il ne semble pas y avoir d'effet ou de problème que j'ai remarqué - je suis juste curieux.

J'utilise OS X 10.8 (Mountain Lion).

22voto

Chris Page Points 7394

Le point d'interrogation (et les éléments du menu contextuel désactivés) indique que Terminal pense que le répertoire de travail se trouve sur un ordinateur distant, et que vous ne pouvez donc pas y accéder dans le Finder à l'aide du menu contextuel. Si vous regardez le dernier élément du menu contextuel (Command-Click sur l'icône "proxy"), vous verrez l'ordinateur/hôte sur lequel Terminal pense que le répertoire de travail se trouve. Vous devriez constater qu'il ne s'agit pas du nom actuel de l'ordinateur.

Si vous utilisez bash (l'interpréteur de commandes par défaut sous MacOS), il envoie par défaut une séquence de contrôle au terminal à chaque invite pour indiquer au terminal le répertoire de travail actuel. Comme les séquences de contrôle peuvent provenir d'ordinateurs locaux ou distants, il envoie une URL de type "file :" incluant le nom d'hôte, et Terminal vérifie que le nom correspond à la machine actuelle. Si ce n'est pas le cas, Terminal désactive les éléments du menu contextuel du chemin d'accès, car ils ne correspondent pas à des répertoires locaux.

Vous pouvez voir le code qui envoie la séquence de contrôle en /etc/bashrc_Apple_Terminal (ou /etc/bashrc sur les anciennes versions de MacOS).

[Notez que si vous n'utilisez pas bash, ou si vous l'avez personnalisé de manière à ce que le comportement par défaut ne se produise pas, mais que votre interpréteur de commandes (ou un autre programme que vous exécutez) envoie des séquences de contrôle pour définir le titre de la fenêtre ou de l'onglet (icône), Terminal les examine pour voir si elles contiennent ce qui ressemble à un nom de chemin, puis vérifie si cela correspond à un nom de chemin local valide. Dans le cas contraire, il n'affiche pas du tout l'icône proxy de la fenêtre].

Un scénario dans lequel Terminal peut ne pas reconnaître que l'URL "file :" est sur l'hôte actuel, c'est-à-dire qu'il n'est pas en mesure d'identifier le fichier. se trouve sur l'hôte actuel, si vous modifiez votre configuration réseau alors qu'un shell est en cours d'exécution. Un cas courant est la mise en veille d'un ordinateur portable et son déplacement vers un autre emplacement, puis son réveil. Le nom et l'adresse de l'hôte local auront changé, mais l'adresse du shell $HOSTNAME a toujours l'ancien nom d'hôte, et c'est ce qu'il envoie dans la séquence de contrôle. Pour corriger cela, mettez à jour la variable d'environnement avec :

 HOSTNAME=$(hostname)

Un autre scénario est celui où vous quittez Terminal, modifiez les configurations du réseau, puis ouvrez Terminal avec la reprise activée. Le terminal rétablira les fenêtres et les onglets, ainsi que la dernière URL de répertoire de travail envoyée à chacun. Si vous rencontrez ce cas, $HOSTNAME sera à jour (puisqu'il démarre un nouveau shell), mais l'URL du terminal peut rester périmée jusqu'à ce que le shell la mette à jour. Si l'affichage de l'invite de commande ne résout pas le problème, essayez de changer de répertoire à l'aide de la commande cd pour que le shell le mette à jour.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X