??????Windows???д???????????Linux???дshell??????????????????ж?????????????????????????????????????????????????????????????????в???????·????????????????
??????????????????????????????ж??????????????У????????????????á?
????Windowscmd.exe
??????Windows???????????cmd.exe?£???????????where??????????????%PATH%?£?????????????????????磺
????wherenotepad
????whereslmgr.vbs
?????????????????%ERRORLEVEL%?????0??????%ERRORLEVEL%??????1??
????where???????????????????????????????????????????.exe??.bat??.cmd???????????????????where???????????%PATHEXT%???г??????????в????
??????????????????????????????wheretest????????????%PATH%?′?????????????????????where???????????????????????????????????е????????????where??????????У??????????????????????????????????
????????where??????????????????????1?????У?
????1???????????????′??????????????????У???????%PATH%?????????????????
????2???????????????ж?????????????????????
????????C:Userszzzbuzz???????whereabc??
????C:Userszzzbuzzabc
????C:Userszzzbuzzabc.bat
????C:Userszzzbuzzabc.cmd
????C:Userszzzbuzzabc.exe
????C:Windowsabc
????C:Windowsabc.bat
????C:Windowsabc.cmd
????C:Windowsabc.exe
????????????????????????????????????????
?????????????????′??????????????????У???????%PATH%????????????????
?????????????????ж????????????%PATHEXT%???г???????????????????к?????????????????????С?
??????%PATHEXT%????.COM;.EXE;.BAT;.CMD??????????abc????????е?C:Userszzzbuzzabc.exe????С?
???????????where?????????????????????п???????????????????????????????????????where???????????????????????????????????where??????????????????????????????С???????????????????????
????Linux
??????Linux?£??????У?????????????????????????????????????????????????????????????????????????е??????????????????
????which
????which????????????????????????·??????????????а????????which????????Debian?????debianutils????????????????????????????????????λ???????????????????????????????????κ???????????????????????????????Cygwin?£????????????????which:nocmdin(/usr/local/bin:/usr/bin:/bin)????
?????????÷????£?
????$whichbash
????/usr/bin/bash
????$echo$?
????0
????$whichnonexistent
????$echo$?
????1
???????д?????£?
????CMD=cmd
????ifwhich"$CMD">/dev/null2>&1;then
????echo????$CMD????
????else
????echo????$CMD??????
????fi
?????????????????which???????????????????????
????· which??????????????????е??????????????μ?????????Щ???У???????????????????????????0??
????· ??Щ?????which?????????????which????????????????Щ??????????С?
????type
????type??shell???????????????????????????????????????????????????????????????????STDOUT?????????????????0?????????STDERR?д??????????????????????0?????
????????type????????????????????????????????shell?ж????alias??function??builtin????????????????????????????-P????????????????????????????-P?????ж?????POSIX????У??????????????????????????
?????????÷????£?
????$typebash
????bashis/usr/bin/bash
????$echo$?
????0
????$typenonexistent
????nonexistent:notfound
????$echo$?
????1
???????д?????£?
????CMD=cmd
????iftype"$CMD">/dev/null2>&1;then
????echo????$CMD????
????else
????echo????$CMD??????
????fi
????hash
????hash??shell??????????????????????????λ??????????????????κ??????????0??????????????????STDERR??????????????????????????????0?????
?????????÷????£?
????$hashbash
????$echo$?
????0
????$hashnonexistent
????sh:1:hash:nonexistent:notfound
????$echo$?
????1
???????д?????£?
????CMD=cmd
????ifhash"$CMD"2>/dev/null;then
????echo????$CMD????
????else
????echo????$CMD??????
????fi
???????hash????????????????????????????????????????????????shell??hash??????????????λ?????????????????????????????????????????е????????????????????????????????????????ò?????hash??????????????á?
????command
????command??????shell???????????????????????????????-v??????????????????й??????
???????????STDERR???????????????????????-v???????????STDOUT??????????????·????
??????????????????????????command????0???????????????0?????
?????????÷????£?
????$command-vbash
????/usr/bin/bash
????$echo$?
????0
????$command-vnonexistent
????$echo$?
????1
???????д?????£?
????CMD=cmd
????ifcommand-v"$CMD">/dev/null2>&1;then
????echo????$CMD????
????else
????echo????$CMD??????
????fi
????command???????POSIX???????????????????????????μ?????????д??????????????????????????????