ドル括弧の拡張をサポートせず、バッククォートを要求するシェルはどれですか?


8

最新の推奨事項は、次のものを使用することです。

$(...)

古いの代わりに:

`...`

主に読みやすさとネスティング時にエスケープする必要性を回避するためです。

$(...)フォームをサポートしていないシェルはどれですか。また、現在も使用されているシェルはありますか?



「バックティックを使用する唯一の理由は、本物のBourneシェル(Heirloomなど)との互換性のためです。」
joeytwiddle 2015

1
重要な点の1つは、90年代以降に維持されているすべてのUnixライクなシステムにはsh、適切な環境でをサポートするというコマンドが呼び出されること$(...)です。
ステファンChazelas

回答:


8

元のBourneシェル、cshまたはtcshはすべてサポートしておらず 、コマンド置換が$()必要です``

Bourneシェルは、多くのUNIXベースのオペレーティングシステムのデフォルトシェル(/ bin / sh)として使用されなくなりました。ただし、これらのシェルは、歴史的な理由で引き続き使用されているため、OSベンダーから提供されています。

AIXとHP-UXの両方に、POSIX準拠のシェルとして/ bin / shがあります。Bourneシェルは、AIXでは 'bsh'(ただし、1995年にAIX 4.1で非推奨)およびHP-UX 11.11 '/ usr / old / bin / sh'(Bourneは11.23から削除されました)として引き続き使用できます。いつ切り替えられたかはわかりませんが、何年も前のことです。


5

Solaris 10以前/bin/shはをサポートしていません$()

Solaris 10がまだ使用されているため、Sunは現在も使用されており、Sunはそれを標準準拠バージョン(Solaris 10まで)に置き換えたくありませんでした。また、ほとんどの人/bin/shがデフォルトのシェルと見なし、方法を知らないためです。POSIX準拠のシェルでスクリプトを移植可能に実行します

変更しないことに対するSunの動機は/bin/sh、非準拠の動作に依存する既存のシェルスクリプトを壊さないようにすることでした。


2
@cuonglm、はい、私はそれをテストしただけで、確認できます。むしろ、Hurdのは、Sun / Oracleは上の方針を変更するよりも、解放されようとしていると考えているだろう/bin/sh...
maxschlepzig
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.