Linux

沒有定位到命令真實路徑的命令

  • June 15, 2018

我們有一個安裝了 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

hadoop執行檔 in是/usr/bin指向. /usr/hdp/current/hadoop-client/bin/hadoop該符號連結的目標很可能不存在。如果它存在,應該對其進行調查以確保它是可執行的。

which如果符號連結指向一個失去(死符號連結)或不可執行的文件,則不會顯示它。

此外,通常使用command -v而不是更好which(尤其是在應該可移植的腳本中)。

有關的:

引用自:https://unix.stackexchange.com/questions/447988