Очевидно, что мой файл существует в /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Однако, когда я пытаюсь chown
, я получаю ошибку
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
Дальнейшие попытки запустить его также не удаются!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
Что здесь происходит?
/ usr / bin / ngrok
будет символической ссылкой, которая никуда не указывает (или, скорее, на несуществующий файл). Проверьте с помощью ls -l
.
Учитывая ошибку chown
, наиболее вероятно, что это символическая ссылка, на что ответил Свен . Однако просто для справки на случай, если кто-то попадает сюда в случаях, когда файл существует и не является ссылкой, но дает ошибку command-not-found / file-not-found, еще одна возможность заключается в том, что исполняемый файл динамически связан и по какой-то причине он не может загружать библиотеки:
ldd
в двоичном файле, чтобы увидеть их) Кроме того, для сценария, если интерпретатор в shebang не может быть выполнен по аналогичным причинам, вы получите ту же ошибку.
У вас также есть возможность изменить владельца самой символической ссылки с помощью
chown -h my_user: users / usr / bin / ngrok
, если вы не хотите (или у вас есть разрешение), чтобы изменить владельца целевого файла.