change(){
read -p "Enter username" q
sudo su $q
cd /home/$q
pwd
}
change
sudoを使用せずにディレクトリを変更できますが、sudo suを実行するとcdが動作しません。これの背後にある理由と解決方法UNIXシェルからディレクトリを変更する方法
change(){
read -p "Enter username" q
sudo su $q
cd /home/$q
pwd
}
change
sudoを使用せずにディレクトリを変更できますが、sudo suを実行するとcdが動作しません。これの背後にある理由と解決方法UNIXシェルからディレクトリを変更する方法
sudo su $q
を実行すると、$ qとしてログインしています。その後、スクリプトはsudo su
コマンドが終了するまで待機してから実行を継続します。残りのスクリプトは、exit
と入力した後に実行されます(ディレクトリの変更を含む)。
su
別のディレクトリにアップ終了するために必要であれば、あなたは最初変更ディレクトリ、およびをだろうそしてはsudo su
コマンドを実行します。
sudoを最初に実行してからcdすることができます。エラーmsgの許可が拒否されました。sudoは行う必要があります。いくつかの回避策を提案できますか? – user3185460
さて、最初に "sudo cd yourDirectory"を実行してから "sudo su"を実行できるはずです。そのことが分かれば教えてください。 – Alex
私は 'sudo'が何らかのエラーを投げていると思って、スクリプトはそれ以降に終了しています。それで、それ以降はコマンドを実行しません。スクリプトをデバッグして、 'cd'コマンドが実行されているかどうかを確認してください。 –
はい、sudoのために私は理解していますが、回避策や解決策があります。もし私が単一のスクリプトにsudoとcdを入れたいのであれば、 – user3185460
'sudo -i'が必要です。https:// unix。 stackexchange.com/questions/35338/su-vs-sudo-s-vs-sudo-i-vs-sudo-bashユーザーのホームフォルダにcdする必要はありません。すでに 'sudo -i 'と一緒に存在しています – Vahid