새 셸을 시작하는 명령에서 스크립트를 호출합니다.

새 셸을 시작하는 명령에서 스크립트를 호출합니다.

우분투 20.04를 사용합니다. 셸을 생성하는 명령을 수동으로 호출한 다음 이 새 셸에서 두 번째 스크립트를 호출하여 파일 시스템 덮어쓰기를 비활성화할 수 있습니다. 하지만 저는 컴퓨터를 자동으로 업데이트할 수 있도록 스크립트를 작성하고 싶습니다.

OverlayFS를 비활성화하기 위해 실행한 두 개의 스크립트는 다음과 같습니다.

스크립트 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"
}

답변2

overlayroot-chroot를 실행하는 명령을 에코하여 이 문제를 해결했습니다(이전에는 성공하지 못했습니다).

echo "source /home/path/to/overlayfs/disable.sh" | sudo overlayroot-chroot

관련 정보