啟動(dòng)或禁用shell內(nèi)建命令
enable [-a] [-dnps] [-f filename] [name ...]
禁用一到多個(gè)內(nèi)建命令。
啟用一到多個(gè)內(nèi)建命令。
直接調(diào)用與禁用的內(nèi)建命令同名且在$PATH
路徑下找到的外部命令。
打印所有內(nèi)建命令,無(wú)論是否禁用。
打印處于啟用狀態(tài)的內(nèi)建命令。
打印處于禁用狀態(tài)的內(nèi)建命令。
打印處于啟用狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令。
打印處于禁用狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令。
打印posix標(biāo)準(zhǔn)內(nèi)建命令,無(wú)論是否禁用。
從動(dòng)態(tài)庫(kù)中加載內(nèi)建命令。
移除從動(dòng)態(tài)庫(kù)中加載的內(nèi)建命令。
-a 打印所有內(nèi)建命令,無(wú)論是否禁用。
-d 移除從動(dòng)態(tài)庫(kù)中加載的內(nèi)建命令。
-n 禁用內(nèi)建命令或顯示已禁用的內(nèi)建命令。
-p 以可復(fù)用格式打印。
-s 只顯示處于啟動(dòng)狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令。
-f 動(dòng)態(tài)庫(kù)中加載內(nèi)建命令。
-ns 打印處于禁用狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令。
-as 打印posix標(biāo)準(zhǔn)內(nèi)建命令,無(wú)論是否禁用。
filename:動(dòng)態(tài)庫(kù)文件名。
name(可選):內(nèi)建命令,可以為多個(gè)。
enable返回成功,除非name不是內(nèi)建命令或有錯(cuò)誤發(fā)生。
# posix special builtin
# 假設(shè)沒(méi)有任何內(nèi)建命令被禁用
# 禁用兩個(gè)posix標(biāo)準(zhǔn)內(nèi)建命令
enable -n set source
# 打印處于禁用狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令
enable -ns
# 打印posix標(biāo)準(zhǔn)內(nèi)建命令,無(wú)論是否禁用。
enable -as
# 打印處于啟用狀態(tài)的posix標(biāo)準(zhǔn)內(nèi)建命令
enable -s
# 假設(shè)沒(méi)有任何內(nèi)建命令被禁用
# 禁用一到多個(gè)內(nèi)建命令
enable -n echo pwd
# 打印所有內(nèi)建命令,無(wú)論是否禁用。
enable -a
# 打印處于啟用狀態(tài)的內(nèi)建命令
enable
# 打印處于禁用狀態(tài)的內(nèi)建命令
enable -n
# 啟用一到多個(gè)內(nèi)建命令
enable pwd
Q:請(qǐng)問(wèn)-f
,-d
,-p
的演示呢?
A:說(shuō)明一下,-f
與-d
限于個(gè)人能力沒(méi)有找到合適的例子,如果您有更好的例子歡迎提pr;
經(jīng)過(guò)我驗(yàn)證-p
選項(xiàng)是否使用好像沒(méi)有區(qū)別,可以比較enable -p|cat -A
和enable|cat -A
有什么區(qū)別。(注:cat -A
用于顯示不可見(jiàn)字符)
Q:是否可以禁用enable
自己?之后還能禁用或啟用內(nèi)建命令嗎?
A:可以;不能。
linux shell命令執(zhí)行時(shí),shell總是先在自己的shell builtin中查找該命令,如果找到則執(zhí)行該命令;如果找不到該命令,則會(huì)從環(huán)境變量
$PATH
指定的路徑中依次去查找待執(zhí)行的命令。看起來(lái)好像沒(méi)有辦法編寫(xiě)用戶(hù)自己的命令來(lái)替代shell builtin命令。幸運(yùn)的是,有了enable
命令我們就能做到了。
builtin
命令的提示部分,然后繼續(xù)閱讀下面部分;當(dāng)內(nèi)建命令echo
沒(méi)有禁用時(shí),如果要調(diào)用外部命令echo
,只能這樣寫(xiě)/usr/bin/echo
;
當(dāng)我們禁用了echo
后,優(yōu)先級(jí)順序變成了這樣:
函數(shù) > 外部命令
如果執(zhí)行命令的環(huán)境沒(méi)有echo
函數(shù),那么調(diào)用的echo
就是外部命令。
help
命令。