実行前のシェルスクリプトパッチ

実行前のシェルスクリプトパッチ

私はシェルスクリプト(arch-chrootArch Linuxで)を持っています。arch-install-scriptsパッケージ)、起動時に最後の行から始まりますchrootchroot

SHELL=/bin/sh unshare --fork --pid chroot "$chrootdir" "$@"

私のユースケースでは、まったく同じスクリプトを使用し、最後の行に「パッチ」を追加したいと思います。

SHELL=/bin/bash chroot "$chrootdir" "$@"

これを行う最良の方法は何ですか?重要な場合は、arch-chrootroot権限でスクリプトを実行する必要があります。今パッチされたスクリプトのコピーだけが残りました。元のスクリプトが更新されると、パッチされたバージョンは「古い」になります。必要に応じて一時的な場所にコピーしてパッチを適用することもできますが、それが良いかどうかはわかりません。

スクリプトを一時的にパッチする方法はありますか?

元のスクリプトは、そのスクリプトが属するパッケージが更新されたときにのみ変更されます。私の目標は、元のスクリプトを変更せずに元のスクリプトの最新バージョンのパッチバージョンを呼び出す方法を持つことです。

ベストアンサー1

簡単で粗大な回避策は、元のファイルの変更されたコピーで一時ファイルを生成し、tmpfileを実行arch-chrootする小さなスクリプトを作成することです。たとえば、

#!/bin/sh
scriptfile=$(mktemp /tmp/tempscript.XXXXX)
sed 's#SHELL=.*#SHELL=/bin/bash chroot "$chrootdir" "$@"#' /usr/bin/arch-chroot > $scriptfile

$scriptfile "$@"

1行だけが文字列と一致すると仮定します。行が多いか、行がないとSHELL=自動的に失敗します。/usr/bin/arch-chroot

おすすめ記事