紛らわしい質問のタイトルにはお詫び申し上げます。私はsudo-ed環境で親スクリプト(shel1.sh)によって起動されたシェルスクリプト(例えばshel2.sh)から対話型のbashシェルを起動しようとしています。 (私はそれゆえ、スーパーユーザーとしてインストールする必要があり、私のソフトウェアのためのガイド展開 スクリプト、sudoを作成していますが、シェルにアクセスするには、ユーザーが必要な場合があります。)sudo-ed環境からbashシェルを起動する
はここ
#!/bin/bash
set -x
sudo bash << EOF
echo $?
./shel2.sh
EOF
echo shel1 done
shel1.shです
そして、ここでは、私がshel1.shに戻る前に私の入力を待ち、対話型bashシェルを起動するには、この予想
#!/bin/bash
set -x
bash --norc --verbose --noprofile -i
echo $?
echo done
shel2.shです。これは私が見るものです:
+ ./shel1.sh
+ sudo bash
0
+ bash --norc --verbose --noprofile -i
bash-4.3# exit
+ echo 0
0
+ echo done
done
+ echo shel1 done
shel1 done
bash-4.3#は自動的に終了を呼び出して終了します。興味深いことに、-l(または--login)でbashシェルを起動すると、自動入力はログアウトです!
ここで何が起こっているのか説明できますか?
おそらく端末にアクセスできません。 'bash -i dev/null'は再作成には十分です。 – tripleee
「アクセス権がありません」という意味を説明できますか?何とかアクセスを有効にすることはできますか? –
ここでは、(<< EOFのような)ここの文書を使ってstdinをリダイレクトしています。スクリプトの実行方法によっても異なります。 'cron'ジョブは明らかに対話型端末にアクセスできません。 – tripleee