私の会社は Linux のサポートを拡大し始めており、一部のシェル スクリプトはより複雑になり始めています。今日、シバンを次のように使用します
#! /bin/sh
しかし、Ubuntu のような一部のディストリビューションでは、たとえば sh がダッシュを指している場合や、よりエキゾチックな場合に問題が発生しています。
私の質問は、たとえばシバンをバッシュに変更するリスクは何ですか? おそらく、より良い質問は、最近 bash なしでディストリビューションを作成できるかどうかです。
私の会社は Linux のサポートを拡大し始めており、一部のシェル スクリプトはより複雑になり始めています。今日、シバンを次のように使用します
#! /bin/sh
しかし、Ubuntu のような一部のディストリビューションでは、たとえば sh がダッシュを指している場合や、よりエキゾチックな場合に問題が発生しています。
私の質問は、たとえばシバンをバッシュに変更するリスクは何ですか? おそらく、より良い質問は、最近 bash なしでディストリビューションを作成できるかどうかです。
bash 固有の構文に依存している場合は、シェル スクリプトで、汎用シェルではなく bash が必要であることを示す必要があります。
#! /usr/bin/env bash
通常は
#! /bin/bash
システムに非標準の方法/場所にbashをインストールできるようにするため
2 番目の質問への回答: 「最近、bash なしでディストリビューションを作成することは可能ですか?」もちろん、それは可能ですが、信じられないほどありそうにありません。管理者の bash のWeb サイトから-- bash 4.x は GNU/Linux と Mac OSX では標準であり、Windows では Cygwin と MinGW の両方に bash 3.x が同梱されています。BSD 用のポートがあり、Solaris には 8 以降のバージョンの bash が付属しており、bash 4.x では 10 が出荷されています。
これは、bash のない GNU/Linux OS を見つけるのは非常に不運であることを示唆しているようです。
あなたは間違った質問をしていると思います。#!/bin/sh
より良い質問は、「移植性のないシェル構文 (別名、バシズム)を使用するスクリプトに使用するのはどれほど悪いことか」です。答えは「本当に悪い」です。シバンを修正します。#!/bin/sh
スクリプトを書いてもbash
スクリプトを書くと、トラブルが発生します。エキゾチックだと考えるのdash
をやめれば、より移植性の高いコードを書くことができます。要するに、シバンを修正することはまったく悪いことではなく、そうしないことは非常に悪いことです。
PHPに変更するよりもリスクはありません。またはPerlに。またはPythonに。お好きな通訳者をご利用ください。