不定位命令真实路径的命令

不定位命令真实路径的命令

我们有一个安装了 Hortonworks (HDP) 的 RHEL 7.x,并且需要建议为什么我们可以使用which命令:

没有hadoop...

Hadoop客户端安装在下面/usr/bin并且从env我们得到

[root@hadoop_machine ~]# env | grep PATH
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

本来应该如此。那么为什么我们会遇到which hadoop这个错误呢?

[root@hadoop_machine ~]# which hadoop
/usr/bin/which: no hadoop in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

[root@hadoop_machine ~]# ls -ltr /usr/bin | grep hadoop
lrwxrwxrwx. 1 root root         44 Jun  4 11:24 yarn -> /usr/hdp/current/hadoop-yarn-client/bin/yarn
lrwxrwxrwx. 1 root root         51 Jun  4 11:24 mapred -> /usr/hdp/current/hadoop-mapreduce-client/bin/mapred
lrwxrwxrwx. 1 root root         44 Jun  4 11:24 hdfs -> /usr/hdp/current/hadoop-hdfs-client/bin/hdfs
lrwxrwxrwx. 1 root root         41 Jun  4 11:24 hadoop -> /usr/hdp/current/hadoop-client/bin/hadoop

答案1

hadoop中的可执行文件是/usr/bin到 的符号链接/usr/hdp/current/hadoop-client/bin/hadoop。该符号链接的目标很可能不存在。如果存在,应该对其进行调查以确保它是可执行的。

which如果符号链接指向的文件丢失(死符号链接)或不可执行,则不会显示它。

另外,通常使用command -v而不是更好which(特别是在应该可移植的脚本中)。

有关的:

相关内容