这里是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
在我的机器上找到什么呢?
链接是相对于自身的(不是您的进程的当前工作目录是什么),因此请断开链接mysql
并添加其余部分
/usr/local/bin/../Cellar/mysql/5.7.17/bin/mysql
或者换句话说
/usr/local/Cellar/mysql/5.7.17/bin/mysql
如果realpath(3)
没有人工操作,有一个系统调用可能会或可能不会由有问题的外壳程序或编程语言公开,以解决此类问题。可移植性受以下各种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并使用它们realpath(3)
(如果要readlink
调用GNUreadlink
并出现在PATH
供应商提供的界面之前,则更加复杂)。
$ greadlink ourlink
../tmp/file
$ greadlink -f ourlink
/private/var/tmp/file
$
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句