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.