which這個命令可以說并不常用,它的作用是查看可執行文件的位置,并返回第一個搜索結果。可執行文件也就是指的某個系統命令,但是這個命令的位置必須是在PATH路徑里存在的。截圖中 ,pwd的位置在/bin/pwd,當然,這個路徑是在PATH中配置的,不同用戶配置的PATH變量不同,查找出的位置也會不同。那么,既然which是查找系統命令的命令,那么它也是可以查找到自己的,which which,但這里返回的并不和pwd相同,這是因為which命令還有別名,即輸入which命令就等于輸入后面那一串命令。
最后,我which的是cd命令,返回的大概意思是“:在PATH路徑下找不到cd命令,這是為什么呢?原因就是cd命令是bash內建的命令,不在PATH路徑下,which當然找不到了。
這里有兩個問題,Linux下的PATH路徑如何查看、修改?bash內建命令是什么意思?
首先,PATH路徑的查看可以這樣來實現:echo $PATH;而修改路徑,可以修改/etc/profile,在文檔最后,添加export PATH="/opt/***/bin:$PATH",保存后退出,加載變量source /etc/profile,添加完成。
其次,bash內建命令與系統命令是相對的,也就是一個是內部命令,一個是外部命令而已。內建命令是shell程序的一部分,在Linux啟動的時候就已經加載到內存中去了,寫在bashy源碼的內建命令,執行起來要比外部命令快的多。查看命令是內建命令還是系統命令,使用type,即type cd