bash之命令執行的順序

一般來說,在shell提示符號下輸入的指令再按下enter後
系統會依以下的順序來找到命令再去執行,執行完成即結束

1.以絕對(相對)路徑表示的命令
e.g.,
$ /bin/ls

2.以alias別名裡有設定的名稱
e.g.,
$ alias
alias mv='mv -i'
alias rm='rm -i'
alias cp='cp -i'
alias telnet='/usr/bin/telnet-ssl -8'
如果要暫時脫逸(escape)有設alias的指令
可以在指令前加一個backslash「\」
$ \rm /tmp/file
執行時就不會有「-i」詢問你是否確定的效果.

3.在function裡有定義的函數名稱
e.g.,
(定義一個function,名稱CatPasswd)
$ CatPasswd (){ cat /etc/passwd; }
$ CatPasswd | head -n1
root:x:0:0:root:/root:/bin/bash

4.在shell裡面的內建命令
e.g.,
$ cd
$ exit
$ type
(可以用type這個builtin command來判斷)
$ type cd
cd is a shell builtin
$ type exit
exit is a shell builtin
$ type echo
echo is a shell builtin
(其實echo指令有內建命令和外部命令兩種)
(要執行外部命令的echo要用明確路徑/bin/echo的方式)

5.PATH環境變數裡指定的路徑
就是你打echo $PATH命令所顯示出來的那些路徑啦
當你打的命令在上面4個都找不到的情況下,就會往這些path路徑裡找

最後,如果bash都找不到的話,就會跟你說command not found


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 fvalinux 的頭像
    fvalinux

    Elegance

    fvalinux 發表在 痞客邦 留言(25) 人氣()