Очевидно, мой файл существует в /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
если вы не хотите (или имеете разрешение) менять владельца целевого файла.