符号链接似乎不存在

符号链接似乎不存在

这里是 MacOS,尽管我 99% 确定这是一个 Unix 问题。

我正在尝试查看 MySQL 的确切安装位置。在终端中我输入:

which mysql

我得到:

/usr/local/bin/mysql

所以我看到该目录 ( ) 中有什么内容ls -al /usr/local/bin/mysql,它给了我:

lrwxr-xr-x  1 myuser  admin  32 Mar 20  2017 /usr/local/bin/mysql -> ../Cellar/mysql/5.7.17/bin/mysql

好的。符号链接。所以我尝试通过 ) 访问该符号链接ls -al ../Cellar/mysql/5.7.17/bin/mysql,我得到:

ls: ../Cellar/mysql/5.7.17/bin/mysql: No such file or directory

那么我../Cellar/mysql/5.7.17/bin/mysql在我的机器上哪里可以找到呢?

答案1

链接是相对的对自己(不是你的进程的当前工作目录是什么)所以删除mysql并添加其余部分

/usr/local/bin/../Cellar/mysql/5.7.17/bin/mysql

或者换句话说

/usr/local/Cellar/mysql/5.7.17/bin/mysql

有一个realpath(3)系统调用可能会或可能不会被相关的 shell 或编程语言公开,以便在无需手动工作的情况下解决此类问题。这些不同的 shell 命令的可移植性受到影响:

$ cd /var/tmp
$ touch file
$ ln -s ../tmp/file ourlink
$ realpath ourlink                      # because I'm in mksh, YMMV
/private/var/tmp/file
$ readlink ourlink
../tmp/file
$ readlink -f ourlink
readlink: illegal option -- f
usage: readlink [-n] [file ...]
$ 

如果您想要一致的外部命令接口,您还可以安装 GNU coreutils 并使用它们(如果您希望 GNU被调用并出现在供应商提供的命令接口之前,则realpath(3)情况会更加复杂)。readlinkreadlinkPATH

$ greadlink ourlink
../tmp/file
$ greadlink -f ourlink
/private/var/tmp/file
$ 

相关内容