私は最近、より構造化された方法でLinux POSIXシェルスクリプトを開発し始めました。
説明します。
コード[A]はいくつかのコード[B]によって取得されます。最小限の例は次のとおりです。
#!/bin/sh
# REQUIREMENTS
# none
# METHODS (public)
# none; this file when sourced sets up basic tput colors, if available
...
コード[B]実行時にいくつかの最小限の例は次のとおりです。
#!/bin/sh
# REQUIREMENTS
. /home/username/Development/sh/functions/func-color_support
# METHODS (public)
print_error ()
# this prints custom heading and a given error message
{
...
}
#!/bin/sh
最初はこれを実現できませんでした。最新バージョンの Bash と Dash で正常に動作するため、関数ファイルを取得するたびに shebang() をコピーします。自己コンパイルされたShellCheckとVS Codeを使用して作業しています。確かにShebangを追加した理由は、当然、毎回フレーズの強調表示を変更せずに機能を編集して更新したかったからです。
だから私の質問は次のとおりです。
Shebang(#!/bin/sh
)を繰り返すことはPOSIXシェルプログラミングに違反しますか?ルールまたはガイドライン?また、ファイルを断片化するときにPOSIX shebang()が重複しているため、実際的なまたは#!/bin/sh
理論的な問題が発生しますか?
昨日、StackOverflowにこの記事を投稿しましたが、まだ答えはありません。しかし、この意見は有望に見えます。
- 2.1.1参照ここ、引用する:
シェルコマンドファイルの最初の行が「#!」文字で始まる場合、結果は指定されません。
答え1
Shebang(#!/bin/sh) を繰り返すのは、POSIX シェルのプログラミング規則や指示に違反していますか?
私はそれを信じていません。dot
同じページで定義を確認してください。
シェルは現在の環境でファイルのコマンドを実行する必要があります。
source() ファイルの最初の行はdot
次のとおりです。シェルコマンドファイルの最初の行なぜなら、私たちはそれを現在の環境に追加するだけです。だから心配していると思います」シェルコマンドファイルの最初の行が「#!」文字で始まる場合、結果は指定されません。「該当しません。
また、POSIX shebang(#!/ bin / sh)の重複が原因でファイルを断片化するときに実用的でも理論的でも問題が発生する可能性がありますか?
私はそのような問題を直接見たことがありません。この場合は、#
単にコメントマークにすぎません。
答え2
問題ではない。 shebangライン()は正しいコメント#!/bin/bash
のように見えます。#
bash
#!
スクリプトの起動時にのみ解釈されます。