enable
啓動或禁用shell內建命令
概要
enable [-a] [-dnps] [-f filename] [name ...]
主要用途
-
禁用一到多個內建命令。
-
啓用一到多個內建命令。
-
直接調用與禁用的內建命令同名且在
$PATH
路徑下找到的外部命令。 -
打印所有內建命令,無論是否禁用。
-
打印處於啓用狀態的內建命令。
-
打印處於禁用狀態的內建命令。
-
打印處於啓用狀態的posix標準內建命令。
-
打印處於禁用狀態的posix標準內建命令。
-
打印posix標準內建命令,無論是否禁用。
-
從動態庫中加載內建命令。
-
移除從動態庫中加載的內建命令。
選項
1-a 打印所有內建命令,無論是否禁用。
2-d 移除從動態庫中加載的內建命令。
3-n 禁用內建命令或顯示已禁用的內建命令。
4-p 以可複用格式打印。
5-s 只顯示處於啓動狀態的posix標準內建命令。
6-f 動態庫中加載內建命令。
7-ns 打印處於禁用狀態的posix標準內建命令。
8-as 打印posix標準內建命令,無論是否禁用。
參數
filename:動態庫文件名。
name(可選):內建命令,可以爲多個。
返回值
enable返回成功,除非name不是內建命令或有錯誤發生。
例子(以下內容限於篇幅不再列出返回值部分)
1# posix special builtin
2# 假設沒有任何內建命令被禁用
3# 禁用兩個posix標準內建命令
4enable -n set source
5# 打印處於禁用狀態的posix標準內建命令
6enable -ns
7# 打印posix標準內建命令,無論是否禁用。
8enable -as
9# 打印處於啓用狀態的posix標準內建命令
10enable -s
1# 假設沒有任何內建命令被禁用
2# 禁用一到多個內建命令
3enable -n echo pwd
4# 打印所有內建命令,無論是否禁用。
5enable -a
6# 打印處於啓用狀態的內建命令
7enable
8# 打印處於禁用狀態的內建命令
9enable -n
10# 啓用一到多個內建命令
11enable pwd
Q&A
Q:請問-f
,-d
,-p
的演示呢?
A:說明一下,-f
與-d
限於個人能力沒有找到合適的例子,如果您有更好的例子歡迎提pr;
經過我驗證-p
選項是否使用好像沒有區別,可以比較enable -p|cat -A
和enable|cat -A
有什麼區別。(注:cat -A
用於顯示不可見字符)
Q:是否可以禁用enable
自己?之後還能禁用或啓用內建命令嗎?
A:可以;不能。
注意
linux shell命令執行時,shell總是先在自己的shell builtin中查找該命令,如果找到則執行該命令;如果找不到該命令,則會從環境變量
$PATH
指定的路徑中依次去查找待執行的命令。看起來好像沒有辦法編寫用戶自己的命令來替代shell builtin命令。幸運的是,有了enable
命令我們就能做到了。
- 關於同名命令調用的優先級的知識,請先參考
builtin
命令的提示部分,然後繼續閱讀下面部分;
當內建命令echo
沒有禁用時,如果要調用外部命令echo
,只能這樣寫/usr/bin/echo
;
當我們禁用了echo
後,優先級順序變成了這樣:
函數 > 外部命令
如果執行命令的環境沒有echo
函數,那麼調用的echo
就是外部命令。
- 該命令是bash內建命令,相關的幫助信息請查看
help
命令。
來源:https://github.com/jaywcjlove/linux-command
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。