SH ファイル形式とは?
.shは、bash(Bourne-again shell)やその他のPOSIX互換シェルで使用される一般的なUnixシェルの拡張子です。.shファイルにはシェルスクリプト、つまりシェル言語で書かれた一連のコマンドや命令がプレーンテキストとして保存されています。
.shファイルは任意のテキストエディタで作成され、主にUnixシェルのコマンドラインで実行されるスクリプトに使用されます。通常、.shファイルはシバン(shebang)行(#!/bin/shや#!/bin/bashなど)で始まり、これによりオペレーティングシステムに使用するインタプリタを指示します。スクリプトを直接実行するには、chmod +x filename.shを使用してファイルを実行可能にする必要があります。
Bashは、GNUライセンスの下で配布されているインタープリタ型のコマンド言語であり、無料のUnixシェルです。多くのLinuxおよびmacOSシステムでデフォルトで使用されています。ほとんどのUnix系システムがこのシェルをサポートしています。BashはオリジナルのBourneシェルを置き換えたものであり、その名前(Bourne-again)の由来となっています。
.shファイルは、Korn Shell、Z Shell、C Shell、Bourne Shellなど、他のシェル向けのスクリプトを保存するためにも使用されます。Windowsでは、同等の自動化はバッチファイルやPowerShellスクリプトによって処理されます。.shは慣習的にPOSIXシェルの互換性を示しますが、特定のシェルを対象とするスクリプトは、シバン行で明示的にインタプリタを宣言します。
セキュリティと安全性
リスク: MEDIUM.shファイルは、任意のコマンドを実行するという点でUnixにおける実行ファイルと同等です。実行されると、ファイルの削除、ソフトウェアのインストール、データの流出、マルウェアの実行など、ユーザーができることは何でも実行できてしまいます。悪名高い «curl URL | bash» パターンは、内容を検査する機会なしにリモートスクリプトを実行します。安全規則:(1) 信頼できないソースからの.shは、まず内容を読まずに実行しないでください。プレーンテキストなので、エディタで開いて動作を確認できます。(2) 難読化されたワンライナー、base64の塊、またはsudoにパイプするスクリプトには注意してください。(3) 自己解凍型インストーラスクリプト(shar/Makeself、.runを含む)は、スクリプトの後にペイロードを隠しています。これらは公式ベンダーのものだけを実行してください。.shは自動的に危険なわけではありませんが、コードであるため、ソースを信頼することが重要です。
形式の詳細
概要SH ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルタイプ | プレーンテキストの実行可能シェルスクリプト |
| MIMEタイプ | application/x-sh |
| シバン慣習 | 最初の行でインタプリタを宣言:#!/bin/sh、#!/bin/bash、または #!/usr/bin/env bash |
| 文字エンコーディング | UTF-8 または ASCII。エンコーディングは対象のシェルでサポートされている必要があります |
| 改行コード | LF(Unixスタイル)が必須。CRLF改行はほとんどのシェルで構文エラーの原因となります |
| 実行方法 | bash script.sh で呼び出すか、実行ビットを設定(chmod +x)して ./script.sh として直接実行 |
| コメント構文 | # 文字。# から行末まではインタプリタによって無視されます |
| 変数代入 | 型宣言は不要。VAR=value(=の周囲にスペースなし)。$VAR または ${VAR} としてアクセス |
| 終了コード慣習 | 0 = 成功。0以外の値 = エラー。exit N 経由で返されるか、$? で検査可能 |
| POSIXポータビリティ | POSIX sh標準に準拠して書かれたスクリプトは、bash、dash、ksh、およびあらゆる準拠シェルで動作します |
| エラー処理フラグ | set -e は最初のエラーで終了、set -u は未定義変数をエラーとして処理、set -o pipefail はパイプの失敗を捕捉 |
| プラットフォームサポート | LinuxおよびmacOSでネイティブ。WindowsではWSL、Git Bash、またはCygwin経由で利用可能 |
| 主要インタプリタ | Bash (GNU Bourne-Again Shell)。シバン行に応じて dash、ksh、zsh も使用 |
| スクリプトのデバッグ | set -x はトレースモードを有効にし、実行前に各コマンドを表示。bash -n は実行せずに構文をチェック |
| リリース日 | 1979 (Bourne shell, Unix V7); POSIX shell standardized; Bash 1989 |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | pubs.opengroup.org |
SH の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。SH ファイルについて最初の質問をしてみましょう。