初めてシェルに触れました。
私は非常に基本的なスクリプトを書いています。
#!/bin/bash
example()
{
echo "Code that don't need sudo."
sudo -s
echo "Code that need sudo"
}
example
このスクリプトを実行した後、次のことを期待します。
早く
Code that don't need sudo.
シェルが私にパスワードを尋ねる
パスワードが正しい場合はプロンプト
Code that need sudo.
ただし、正しいパスワードを入力してもプロンプトは表示されません。Code that need sudo.
理由と回避策は何ですか?
ベストアンサー1
sudo -s
これは、ルートシェルが起動してパスワードを入力すると、このシェルで自分自身を見つけることができるためです。その後、シェルを終了すると次のようになりますCode that need sudo
。
$ foo.sh
Code that don't need sudo.
[sudo] password for terdon:
[root@tpad terdon]# exit
Code that need sudo
通常、すべてのスクリプトでコマンドを実行するように指示すると、コマンドが完了した後にのみスクリプトが実行され続けます。したがって、スクリプトが起動したら、sudo -s
続行する前にスクリプトが完了するのを待ちます。これがすぐに実行exit
(または+押す)ctrl後にテキストが印刷される理由ですD。