これを行うスクリプトを書いています...
chroot /chroot_dir/ su -
./startup.sh (This should run within the su environment)
私はこのアプローチを試しました:
chroot /chroot_dir /bin/bash -c " su -; ./startup.sh"
これは、ユーザー切り替えとスクリプトをbashへの文字列コマンドとして実行しようとします...しかし、それが何をするのかは"su-"の後に「停止」し、スクリプトを実行しません。ただし、「su-」環境を離れると、startup.shを実行しようとしますが、もちろん見つかりません。
基本的に、「startup.sh」をネストして「su-」環境内で実行する必要があります...
試す
chroot /chroot_dir /bin/bash -c "su - -c ./startup.sh"
chroot /chroot_dir /bin/bash -x <<'EOF'
su -
./startup.sh
EOF
基本オプション:
cat << EOF | chroot /chroot_dir
touch aaaaa
touch bbbbb
EOF
別のシェルでのオプション(たとえば、bashを使用しているが、chrootされた環境には存在しない場合)
cat << EOF | chroot /chroot_dir /bin/sh
touch aaaaa
touch bbbbb
EOF