De toute évidence, mon fichier existe dans /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Cependant, lorsque j'essaye, chown
je reçois une erreur
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
D'autres tentatives pour l'exécuter échouent également!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
Que se passe-t-il ici?
/usr/bin/ngrok
pour être une symétrie complète du cas suivant avecsudo
.Réponses:
/usr/bin/ngrok
sera un lien symbolique qui ne pointe nulle part (ou plutôt vers un fichier inexistant). Vérifiez avecls -l
.la source
readlink -f /usr/bin/ngrok
pour trouver où le lien doit pointer.namei -l /usr/bin/ngrok
Compte tenu de l'
chown
erreur, la possibilité la plus probable est qu'il s'agit d'un lien symbolique, comme l'a répondu Sven . Cependant, juste pour référence au cas où quelqu'un se retrouverait ici pour les cas où le fichier existe et n'est pas un lien, mais donne une erreur de commande introuvable / fichier introuvable, une autre possibilité est que l'exécutable soit lié dynamiquement et pour une raison quelconque, il n'est pas en mesure de charger les bibliothèques:ldd
sur le binaire pour les voir)De plus, pour un script, si l'interpréteur du shebang ne pouvait pas être exécuté pour des raisons similaires, vous obtiendriez la même erreur.
la source
Vous avez également la possibilité de changer la propriété du lien symbolique lui-même avec
chown -h my_user:users /usr/bin/ngrok
si vous ne souhaitez pas (ou n'avez pas l'autorisation) de modifier la propriété du fichier cible.
la source
chown(1)