2017-08-23 5 views
0
change(){ 
read -p "Enter username" q 
sudo su $q 
cd /home/$q 
pwd 

} 
change 

sudoを使用せずにディレクトリを変更できますが、sudo suを実行するとcdが動作しません。これの背後にある理由と解決方法UNIXシェルからディレクトリを変更する方法

+0

私は 'sudo'が何らかのエラーを投げていると思って、スクリプトはそれ以降に終了しています。それで、それ以降はコマンドを実行しません。スクリプトをデバッグして、 'cd'コマンドが実行されているかどうかを確認してください。 –

+0

はい、sudoのために私は理解していますが、回避策や解決策があります。もし私が単一のスクリプトにsudoとcdを入れたいのであれば、 – user3185460

+0

'sudo -i'が必要です。https:// unix。 stackexchange.com/questions/35338/su-vs-sudo-s-vs-sudo-i-vs-sudo-bashユーザーのホームフォルダにcdする必要はありません。すでに 'sudo -i 'と一緒に存在しています – Vahid

答えて

0

sudo su $qを実行すると、$ qとしてログインしています。その後、スクリプトはsudo suコマンドが終了するまで待機してから実行を継続します。残りのスクリプトは、exitと入力した後に実行されます(ディレクトリの変更を含む)。

su別のディレクトリにアップ終了するために必要であれば、あなたは最初変更ディレクトリ、およびをだろうそしてsudo suコマンドを実行します。

+0

sudoを最初に実行してからcdすることができます。エラーmsgの許可が拒否されました。sudoは行う必要があります。いくつかの回避策を提案できますか? – user3185460

+0

さて、最初に "sudo cd yourDirectory"を実行してから "sudo su"を実行できるはずです。そのことが分かれば教えてください。 – Alex

関連する問題