bash [--選項] [-選項] [引數],多字元選項「--選項」必須放在單字元選項「-選項」前面,之後是引數。通常第一個引數是指令 ($0),剩下引數傳給指令使用 ($1, $2, ...)。單字元選項可使用內建指令 set 支援的單字元選項外,還可以用下列選項:
- -c:第一個引數還是一樣是指令,但傳給指令的 $0 是第二個引數,位置參數 $1 從第三個引數開始。$0 作為警告和錯誤訊息的指令名稱。
- -i:interactive shell
- -l 或 --login:啟動為 login shell。
- -r:見 RESTRICTED SHELL
- -s:指令從標準輸入讀取,不用引數的指令。在 interactive shell 設定為位置參數。
- -D 或 --dump-strings:在標準輸出印出所有前置 $ 的雙引號字串,當 locale 不為 C 或 POSIX 時會做語言轉換。隱含 -n 選項,不執行指令。
- [-+]O [shopt_option]:-O 設定內建指令 shopt 的 shell 選項,+O 清掉。沒有 shopt_option 時,印出這些選項的名稱及值,如果用 +O 輸出可作為輸入的格式。
- -- 或 -:表示選項結束,之後的引數視為檔名及其引數。
- --debugger:在 shell 開始前安排執行 debugger profile,啟用 extended 除錯模式 (見 bash 內建指令 shopt 選項 extdebug 的說明)
- --dump-po-strings:相當於 -D,但以 GNU gettext po (portable object) 檔案格式輸出。
- --help:顯示使用說明。
- --init-file file 或 --rcfile file:在 interactive shell 改執行 file 取代 /etc/bash.bashrc 及 ~/.bashrc (見 bash INVOCATION)。
- --noediting:在 interactive shell 不使用 GNU readline 函式庫來讀取指令行。
- --noprofile:不執行 /etc/profile、~/.bash_profile、~/.bash_login、或 ~/.profile。login shell 預設執行這些檔案 (見 bash INVOCATION)
- --norc:在 interactive shell 不執行 /etc/bash.bashrc 及 ~/.bashrc。以 sh invoke 時預設啟用。
- --posix:行為符合 POSIX 標準模式。見 SEE ALSO 參考 how posix mode affects bash's behavior 細節的文件。
- --restricted:restricted shell (見 bash RESTRICTED SHELL).
- --verbose:相當於 -v。
- --version:顯示版本訊息。
內建指令 set
功能有設定 shell 選項、設定位置參數、列變數
set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
set #依順序列出所有 shell 變數
set arg ... #依序設定位置參數 $1、$2、 ...
指令的選項用來設定或清除 shell 選項。除非特別說明,選項預設是關閉的。使用 - 或 -o 開啟選項,+ 或 +o 關閉選項。
$- 可看到目前的選項。
指令選項說明如下:
-a 或 -o allexport
每個新建或更改的變數,export 到接下來指令的環境。-b 或 -o notify
立刻回報結束的背景工作,而不是等到下個指令提示。-e 或 -o errexit
待續-f 或 -o noglob
停用 pathname 擴展。-h 或 -o hashall
記憶執行時查到的指令路徑,預設是開啟的。-k 或 -o keyword
待續-m 或 -o monitor
待續-n 或 -o noexec
讀取指令但不執行。可用來檢查 shell 指令搞是否有 syntax errors。在 interactive shell 沒作用。-o option-name
沒 option-name 時列出目前 shell 選項設定,+o 顯示一系列 set 指令,可用來重新建立目前選項設定。option-name 大多搭配有單字元格式,沒有的有:
- emacs:使用 emacs-style 指令行編輯界面。interactive shell 預設啟用,除非 shell 時使用選項 --noediting。同時影響編輯界面用來讀取 -e。
- history:啟用指令歷史功能 (見 bash HISTORY)。interactive shell 預設啟用。
- ignoreeof:等同執行 shell 指令 ``IGNOREEOF=10''。(見 Shell Variables).
- nolog:目前忽略
- pipefail:回傳最後失敗指令的回傳值。
- posix:使用 posix 模式。.
- vi:使用 vi-style 指令行編輯界面。同時影響編輯界面用來讀取 -e。
-p 或 -o privileged
開啟特權 (privileged) 模式,此時 $ENV 及 $BASH_ENV 的檔案不處理,不自環境繼承 shell 函數,忽略變數 SHELLOPTS、BASHOPTS、CDPATH、及 GLOBIGNORE。如果 shell 開始時的 effective user (group) ID 和 real user (group) ID 不同,也進行
這些動作。此時如果 -p 沒設,effective user id (group) 會設為 real user (group) id;如果有設,則不動 effective user (group) id。
沒有留言:
張貼留言