程序文件存在于 /usr/bin 中,但无法使用

程序文件存在于 /usr/bin 中,但无法使用

显然我的文件存在于/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

这里发生了什么事?

答案1

/usr/bin/ngrok将是一个指向无处(或者指向不存在的文件)的符号链接。使用 检查ls -l

答案2

鉴于chown错误,最有可能的是它是一个符号链接,因为回答者:Sven。但是,仅供参考,以防万一有人在这里遇到文件存在但不是链接的情况,但给出命令未找到/文件未找到错误,还有一种可能性是可执行文件是动态链接的,由于某种原因它无法加载库:

此外,对于脚本,如果由于类似原因无法执行 shebang 中的解释器,则会收到相同的错误。

答案3

您还可以选择使用以下命令更改符号链接本身的所有权

chown -h my_user:users /usr/bin/ngrok

如果您不希望(或没有权限)更改目标文件的所有权。

相关内容