あなたの基本的な問題は、新しいプロセスchroot
をsu
開始し、それらを呼び出すプロセスに影響を与えないことです。は、コマンドchroot
を実行する新しいプロセスを作成し、コマンドは最終的に新しいシェル プロセスを作成します。ルート ディレクトリが変更されたのは、この新しいシェルです。そのシェルを終了すると、ルートが変更されたことのないスクリプトの実行が再開されます。コマンドは、間違ったコンテキストで実行されます。su
su
./setup.py
su
解決策は、作成するプロセスでコマンドを実行することです。何かのようなもの:
#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ su -l -c "
cd /install/community-edition-setup/;
./setup.py -n -u -a -s -f setup.properties"
これは./setup.py
、ユーザーと対話する必要がある場合、または制御端末が必要な場合には機能しない可能性があります。その場合、次のようなものが必要になる場合があります。
#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ /bin/bash -l -c "
cd /install/community-edition-setup/;
./setup.py -n -u -a -s -f setup.properties"
この場合、スクリプトはすでに root として実行されている必要がありますが、通常は root になってchroot
コマンドを呼び出す必要があります。