/bin/sh
と同じだと誤って考えるシェルスクリプトがたくさんあります。たとえば、shebangが/bin/bash
ありますが(ドット)の代わりにコマンドを使用します。#!/bin/sh
source
.
/bin/sh
に接続されているUbuntu 16を実行しているため、dash
bash-ismsはサポートされていません。
定期的にスクリプトを実行する必要があります。また、時にはこの特定のバグを修正したくない原作者から更新する必要がある場合もあります。これらのファイルをすべて変更することを避けたいです(ファイルが多く、私のものではなく、更新後にすべての変更が失われます)。また、他のスクリプトが破損する可能性があるため、システム全体を変更しないようにしたいと思います。
/bin/sh
グローバルシステムに触れることなく、これらのスクリプトで使用できるbashを指す(一時または非一時)環境を何らかの形で生成する方法はありますか/bin/sh
?
ベストアンサー1
私は、マウントネームスペースやそれに似たものが何であるかについての異なるアイデアを持って、他のプロセス/ユーザーを予約するために使用できると想像しています/bin/sh
。
しかし、これはハッキングのように聞こえ、「システムを恒久的に変更する」と見なすことができます。 1行の変更を行う方が簡単な場合があります。更新プロセスの修正部分を作成し、バグレポートを公開し、バグのハッシュバンにアップストリームパッチを適用します。
GNU の場合、sed
これを修正するには、次の操作を行う必要があります。
sed -i -e '1s,^#! */bin/sh,#!/bin/bash,' /all/the/scripts/*