首頁 > 環境與工具程式 > sh

sh: 執行 Shell 腳本和命令解釋

`sh` 是 Bourne Shell 相容的命令解釋器。它用於執行腳本或接收互動式命令輸入進行處理。在大多數 Linux 系統中,`/bin/sh` 是指向 `bash` 或 `dash` 等其他 Shell 的符號連結,並提供遵循 POSIX 標準的腳本執行環境。

概述

`sh` 是 Unix 和 Linux 系統的預設 Shell 之一,用於執行腳本和處理互動式命令。它嚴格遵循 POSIX 標準,因此使用 `sh` 編寫的腳本在不同系統上具有較高的相容性。

主要特點

  • POSIX 相容性:提供編寫標準 Shell 腳本的基礎
  • 腳本執行:執行儲存在檔案中的命令序列
  • 互動式命令解釋:直接接收使用者輸入的命令並處理
  • 系統預設提供:大多數 Unix/Linux 系統預設安裝

主要選項

`sh` 提供多種選項,影響腳本的執行方式或除錯。

腳本執行與除錯

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`sh` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

執行腳本檔案

sh my_script.sh

使用 `sh` 執行指定的 Shell 腳本檔案。

直接執行命令字串

sh -c "echo 'Hello from sh!' && ls -l"

使用 `-c` 選項透過 `sh` 執行引號括起來的命令字串。

以除錯模式執行腳本

sh -x debug_script.sh

使用 `-x` 選項,在執行腳本時追蹤過程進行除錯。

從標準輸入執行命令

echo "ls -a" | sh

透過管道傳遞命令給 `sh` 執行。

發生錯誤時立即終止

sh -e error_prone_script.sh

設定腳本在發生錯誤時立即終止。

提示與注意事項

`sh` 是一個強大的工具,但了解它與其他 Shell 的差異很重要。

編寫腳本時

  • 建議在腳本的第一行使用 `#!/bin/sh` 來明確指定該腳本由 `sh` 執行。
  • 其他 Shell(如 `bash` 或 `zsh`)的擴充功能(例如陣列、進階模式匹配、`[[ ... ]]` 條件語句)可能無法在 `sh` 中正常工作,因此應僅使用 POSIX 相容語法。
  • 除錯時,`-x` 選項對於理解腳本流程和檢查變數值非常有用。

相容性

大多數 Linux 發行版中的 `/bin/sh` 是指向 `dash`(Debian/Ubuntu 系列)或 `bash`(Red Hat/Fedora 系列)的符號連結。因此,`sh` 腳本會在連結目標 Shell 的 POSIX 相容模式下執行。這意味著它的行為可能與 `bash` 腳本不同。


相同類別命令