新しいシェルを起動するコマンドからスクリプトを呼び出します。

新しいシェルを起動するコマンドからスクリプトを呼び出します。

Ubuntu 20.04を使用してください。シェルを生成するコマンドを手動で呼び出してから、この新しいシェルで2番目のスクリプトを呼び出してファイルシステムの上書きを無効にできます。しかし、私はあなたのコンピュータを自動的に更新できるようにスクリプトを書くのが好きです。

OverlayFSを無効にするために実行した2つのスクリプトは次のとおりです。

スクリプト1:永続的な変更を許可するシェルを開く(overlayroot-chrootは新しいシェルを作成します)

#!/bin/bash
# Enter chroot mode, which allows one to make permanent changes to / parition

echo "Enter mood to make permanent changes"
echo "Press CTRL+D to exit when finished editing"
sudo overlayroot-chroot

スクリプト2:変更

#!/bin/bash
# Disable OverlayFS

echo "Disable overlayfs (read only file system at /)"
FILE=/etc/overlayroot.conf
cat << EOF | sudo tee $FILE
overlayroot_cfgdisk="disabled"
overlayroot=""
EOF

echo "COMPLETE."
echo "Press CTRL+D to exit chroot mode."
echo "Then 'sudo reboot' for the changes to take effect."

スクリプト2は、スクリプト1で生成されたシェル内で実行する必要があります。

しかし、新しく作成されたシェルを実行するためにコマンドをどのように渡しますか?

ベストアンサー1

それは動作しません。各スクリプトは、独自のPIDを持つ新しいシェルを作成します。
script2.shにbash関数を作成し、script1にソースscript2を作成します。
script1 の script2 にある関数を呼び出します。

スクリプト1

source ./script2.sh
# call the function
do_stuff

スクリプト2

do_stuff() {
  echo "hello world"
}

おすすめ記事