l
我正在列出目录,它在权限列前面显示了几个文件/目录,它们有两个名称,用->
带有星号*
(表示可执行)。这是什么意思l
cd /opt/lampp/bin/
ll php*
----
lrwxrwxrwx 1 root root 13 Nov 15 16:05 phpize -> phpize-5.5.15*
-rwxrwxrwx 1 root root 4522 Aug 20 17:23 phpize-5.5.15*
以及如何执行这些命令或进入这些目录。我尝试在终端上分别使用这两个名称执行,但都返回not a directory
/opt/lampp/bin$ phpize
No command 'phpize' found, did you mean:
Command 'phpize5' from package 'php5-dev' (main)
phpize: command not found
/opt/lampp/bin$ cd phpize
bash: cd: phpize: Not a directory
答案1
它是符号链接,第一列中也用 表示l
。这是一种常见情况,即某事物的简单名称与具有确切版本号的“真实事物”相关联。您的所有脚本和命令都可以简单地引用/opt/lampp/bin/phpize
。安装 5.5.16 或 5.6 版本后,您只需更改链接(或者安装程序会为您执行此操作)。
“不是目录”:正如您所提到的,星号表示这些是可执行文件,而不是目录。通常为可执行文件添加星号,而/
为目录添加斜线。因此cd
不适用。
您在当前目录中运行可执行文件时遇到的问题是一个常见的简而言之,如果你只指定一个名称,shell 将搜索你的路径. 常见的和推荐的做法是,您的当前目录不在你的路径中。因此大家要做的只是指定当前目录:./phpize
替代方法是指定整个路径,如我上面所述。无论当前目录是什么,这当然都可以工作。或者您可以将此目录添加到您的 PATH。如果您有许多目录,但只有一个或两个您经常使用的可执行文件,这可能会变得难以处理。因此,符号链接的另一种用途是创建指向这些分散的可执行文件的链接(链接到简短的无版本名称 - 链接可以嵌套),并将所有这些新链接放在您添加到 PATH 的单个目录中。所以现在当您只输入名称时,shell 会搜索 PATH,找到辅助链接,然后跳转到主链接,找到确切的可执行文件并运行它。