Linux
沒有定位到命令真實路徑的命令
我們有一個安裝了 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
(尤其是在應該可移植的腳本中)。有關的: