巨大なプログラムをインストールしていますが、そのリソースはファイルrpm
です。それは並んでいる
#!/bin/sh
SCITEGICPERLBIN=`dirname $0`
SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN`
if [ $SCITEGICPERLHOME == "." ]
明らかに、この構文を使用するとRed Hat Linuxでは機能しますsh
が、Ubuntuではエラーが発生しますbash
。unexpected operator
bash
スクリプトはrpm
パッケージから提供されるため、スクリプトを変更することはできません。パッケージを抽出して再パッケージすることもrpm
できますが、おそらくこのようなスクリプトが多いでしょう。
演算子を処理できる他のものとして#!/bin/sh
扱うようにシェルのデフォルトを変更する方法はありますか?bash
[
ベストアンサー1
Ubuntu 22.04(およびDebian 11)までは、再構成を介して(デフォルトではなく)sh
切り替えることができます(たとえば、これはやや直感に反します)。bash
dash
dash
sudo dpkg-reconfigure dash
dash
デフォルトのシステムシェルとして設定するかどうかを尋ねられます。 「いいえ」と答えると(TabそれからEnter)bash
基本システムシェルになります(つまり /bin/sh
)を指します/bin/bash
。
Ubuntu 22.10とDebian 12以降、この機能はサポートされなくなりました。/bin/sh
この機能に切り替えるには、/bin/bash
手動でシンボリックリンクを歩く必要があります。バラよりザイルズの答えもっと学ぶ。