実行可能なshebangスクリプトには常にLF行末が必要ですか?

実行可能なshebangスクリプトには常にLF行末が必要ですか?

Stack Overflowにコメントを残してください。PowerShell Coreは、Linux環境でCRLF行末のあるps1ファイルを処理できますか?Shebangを使用する実行可能ファイルは、引用に応じてLF行末のみを使用する必要があると主張します。オライリーの本。ここで逸話的な証拠shebangラインはcr-lfとは機能しませんこれを証明するようです。

しかし、これは正式な*nix要件ですか、それとも1つのプラットフォームでの動作ですか?どこかに文書化されていますか?間違いなく周りに方法がありません(例:#行の末尾に追加を追加するなど)。

つまり、PowerShellスクリプトがクロスプラットフォームを使用するためのものである場合は、LF行の末尾(現在の最新のPowerShellで実装可能)に制限されます。バラよりPowerShellスクリプト用のshebangを使用するのが最善ですか?ここにもありますPowerShellスクリプトでshebangをどのように使用しますか?スタックオーバーフローに。

ベストアンサー1

POSIXlyでは、改行文字は唯一の改行文字です。

また、ハッシュバンラインはPOSIXによって指定されず、さまざまなPOSIXyとUnixyシステムの間にも実装の違いがあるため、Windows互換で設計された一部のシステムではハッシュバンラインを排他的に処理することができます。 (これを試してから長い時間が経ちましたが、Cygwinが少なくとも一度はCRLF修正を行ったという印象を受けました。ある程度は必ずしもそうではありません。)

(そしてhashbang行を処理するPerlインタプリタがあります。それ自体、カーネルがそうでない場合。 )

#一般的にいいえ。 CRを防ぐためにコメントタグの使用に頼ることはできません。たとえば、Linuxには次のハッシュバン行があります。

#!/bin/bash#[CR]

単一の引数(およびファイル名)でのみ実行され、bash「ファイルが見つかりません」エラーが発生する可能性があります。#[CR]

しかし、私のMacのようないくつかのシステムで動作します。https://www.in-ulm.de/~mascheck/various/shebang/異なるシステム間のハッシュバン処理の違い表を参照してください。

おすすめ記事