Shell

“(set -o posix;set)|less”在做什麼?

  • May 11, 2017

在我搜尋列出所有 shell 變數的命令時,我不知何故意識到,有一個列出所有環境變數的命令,但不知何故,沒有人列出所有 shell 變數,原因我不知道。

但是,這裡有人給出了關於如何顯示所有變數、shell 和環境變數的答案。

( set -o posix ; set ) | less

他實際上並沒有為外行解釋這個表達式是做什麼的,我零碎的理解不足以掌握它背後的想法。

這是我所知道的:

  • **( command1; command2)**這會導致命令在 shell 的子程序內執行。
  • set是聲明變數的某種方式,但不知道**-o posix的含義以及為什麼要連續執行第二個set**
  • 命令 | 少這個不是問題,即使我理解它,它是一個用於更多控制輸出的尋呼機。

set顯示所有 shell 變數(是否導出)。在 Bash 中,set -o posix將 shell 設置為POSIX 兼容模式。(我不知道其他 shell 是否具有類似功能的類似語法,但我會在這裡假設 Bash。)

這種情況的不同之處在於,通常 Bashset也顯示 shell 函式,但在 POSIX 模式下set只顯示變數,並且稍微改變了輸出格式:

  1. 當不帶選項呼叫 set 內置函式時,它不會顯示 shell 函式名稱和定義。
  2. 當不帶選項呼叫 set 內置函式時,它會顯示不帶引號的變數值,除非它們包含 shell 元字元,即使結果包含非列印字元。

在 Bash 中,還有一個declare內置函式可用於顯示所有隱藏的或 Bash 特定的變數標誌:以 Bash 可以作為輸入的格式declare -p xx顯示變數。顯示所有變數並可用於顯示函式。xx``declare -p``declare -f

引用自:https://unix.stackexchange.com/questions/364270