UbuntuでshにBashを使用する方法

UbuntuでshにBashを使用する方法

巨大なプログラムをインストールしていますが、そのリソースはファイルrpmです。それは並んでいる

#!/bin/sh
SCITEGICPERLBIN=`dirname $0`
SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN`
if [ $SCITEGICPERLHOME == "." ]

明らかに、この構文を使用するとRed Hat Linuxでは機能しますshが、Ubuntuではエラーが発生しますbashunexpected operator

bashスクリプトはrpmパッケージから提供されるため、スクリプトを変更することはできません。パッケージを抽出して再パッケージすることもrpmできますが、おそらくこのようなスクリプトが多いでしょう。

演算子を処理できる他のものとして#!/bin/sh扱うようにシェルのデフォルトを変更する方法はありますか?bash[

ベストアンサー1

Ubuntu 22.04(およびDebian 11)までは、再構成を介して(デフォルトではなく)sh切り替えることができます(たとえば、これはやや直感に反します)。bashdashdash

sudo dpkg-reconfigure dash

dashデフォルトのシステムシェルとして設定するかどうかを尋ねられます。 「いいえ」と答えると(TabそれからEnterbash基本システムシェルになります(つまり /bin/sh)を指します/bin/bash

Ubuntu 22.10とDebian 12以降、この機能はサポートされなくなりました。/bin/shこの機能に切り替えるには、/bin/bash手動でシンボリックリンクを歩く必要があります。バラよりザイルズの答えもっと学ぶ。

おすすめ記事