概述
`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` 腳本不同。