首先啰嗦一下PATH變量的作用:
PATH說簡單點就是一個字符串變量纵顾,當(dāng)輸入命令的時候LINUX會去查找PATH里面記錄的路徑。比如在根目錄/下可以輸入命令ls,在/usr目錄下也可以輸入ls,但其實ls這個命令根本不在這個兩個目錄下务荆,事實上當(dāng)你輸入命令的時候LINUX會去/bin,/usr/bin,/sbin等目錄下面去找你此時輸入的命令嗅钻,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……沪曙。其中的冒號使目錄與目錄之間隔開。
我本機的PATH目錄:
PATH="/usr/local/sbin:/usr/sbin:/sbin:/bin:/usr/bin:/usr/local/bin"
當(dāng)我們執(zhí)行命令出現(xiàn)可能會遇到
-bash: php: command not found
類似這樣的錯誤
但是執(zhí)行完整的目錄命令可以執(zhí)行长窄,這種情況的錯誤就需要考慮是環(huán)境變量的問題
可以使用which查看是否可以找到
which <命令>
一般情況下出現(xiàn)上述錯誤,是肯定找不到的
那么問題出在哪里哪纲菌?
參考PATH變量作用挠日,當(dāng)我們執(zhí)行命令的時候會從PATH變量指定的目錄去尋找相應(yīng)的可執(zhí)行程序
例如上述php命令,我們一般的做法是將php執(zhí)行文件所在bin目錄添加到PATH變量中
export PATH="$PATH:/usr/local/php/bin"
執(zhí)行完上述的命令翰舌,在執(zhí)行php命令時就可以在/usr/local/php/bin 文件夾下找到對應(yīng)可執(zhí)行程序
如果理解PATH的作用嚣潜,則可以不采用這種方式,而是采用在PATH變量現(xiàn)有目錄下建立軟鏈接的方式實現(xiàn)
ln -s /usr/local/php/bin/php /usr/local/bin/php
這樣建立軟鏈接后椅贱,當(dāng)執(zhí)行命令時懂算,就會在/usr/local/bin/找到對應(yīng)的可執(zhí)行程序
命令復(fù)制到/usr/local/bin 無法執(zhí)行?
理解了以上內(nèi)容庇麦,對于這個問題就好解決计技,有時候查網(wǎng)上的資料,就是將可執(zhí)行命令建立軟鏈接到/usr/local/bin/山橄,為什么命令還是無法執(zhí)行哪垮媒?抓耳撓腮
這個時候就需要執(zhí)行export,查看一下本機的PATH變量是不是含有/usr/local/bin/目錄
一般情況下是不會有的,如果有卻執(zhí)行不成功涣澡,哪肯定是可執(zhí)行程序的問題
可以直接執(zhí)行程序的完整目錄試下
有時候我們會遇到連本機命令找不到的情況贱呐,大概率也是PATH變量的原因
本機命令找不到,就是/usr/bin 未在PATH變量中