私はシェルスクリプト(arch-chroot
Arch Linuxで)を持っています。arch-install-scripts
パッケージ)、起動時に最後の行から始まりますchroot
。chroot
SHELL=/bin/sh unshare --fork --pid chroot "$chrootdir" "$@"
私のユースケースでは、まったく同じスクリプトを使用し、最後の行に「パッチ」を追加したいと思います。
SHELL=/bin/bash chroot "$chrootdir" "$@"
これを行う最良の方法は何ですか?重要な場合は、arch-chroot
root権限でスクリプトを実行する必要があります。今パッチされたスクリプトのコピーだけが残りました。元のスクリプトが更新されると、パッチされたバージョンは「古い」になります。必要に応じて一時的な場所にコピーしてパッチを適用することもできますが、それが良いかどうかはわかりません。
スクリプトを一時的にパッチする方法はありますか?
元のスクリプトは、そのスクリプトが属するパッケージが更新されたときにのみ変更されます。私の目標は、元のスクリプトを変更せずに元のスクリプトの最新バージョンのパッチバージョンを呼び出す方法を持つことです。
ベストアンサー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