shell 有個 alias 列表,可透過內建指令 alias 和 unalias 來列出、設定和消除。alias 名稱不能包含字元 /、$、`、=、metacharacter 或 quoting 字元。alias 值可以包含任何 valid shell input,包括 metacharacters。
alias 用在互動式 shell,如果非互動式 shell 也要用,使用內建指令 shopt 設 expand_aliases。
alias 是在整行指令讀取時進行,而不是執行時進行。同行的新 alias 定義要等到指令執行完才會生效,並不會對同行指令生效。在 function 也是同樣的,alias 是在 function 定義讀取時進行,function 裡的新 alias 定義要等到 function 執行才會生效。安全的作法是把 alias 定義放在自己獨立一行,不要用在 compound command。
alias 進行優先於 shell function。
內建指令:alias [-p] [name[=value] ...]
alias 或 alisa -p 以 alias name=value 格式印出所有 alias 或印指定 name 的 alias。設定 name 的 alias 為 value。
內建指令:unalias [-a] [name ...]
移除 alias 名稱 name。選項 -a 移除所有 alias。shell 變數 BASH_ALIASES
由 alias 名稱作為 index 的一個 associative 陣列,成員是 alias 表。陣列新增成員會出現在 alias 表,但清除成員目前並不會從 alias 表移除。如果 unset BASH_ALIASES 會失去其特殊 properties。列出 BASH_ALIASES
$ declare -p BASH_ALIASES或
$ for k in "${!BASH_ALIASES[@]}"; do printf '%s => %s\n' "$k" "${BASH_ALIASES[$k]}"; done參考來源
- bash 的 ALIASES 節、內建指令 alias、shell 變數 BASH_ALIASES
- https://unix.stackexchange.com/questions/109124/bash-aliases-not-equal-to-alias
沒有留言:
張貼留言