Fedora 20インストールで次のスクリプトを実行しようとしています。
#!/bin/bash
password={password}
echo "$password" | sudo -Sk /bin/bash -c '[[ $EUID -eq 0 ]]'
[[ $? -ne 0 ]] && zenity --error --text failed. || zenity --error --text success.
ターミナルエミュレータで実行しようとすると成功が報告されますが、ファイルマネージャ(この場合はThunar)でスクリプトをダブルクリックすると失敗が報告されます。
他のいくつかのディストリビューション(Debian Wheezyなど)では、一貫した動作が見られます。
なぜこれが起こるのですか?この問題を解決するにはどうすればよいですか?
答え1
/ etc / sudoersファイル(visudoを使用してアクセス可能)で、次の操作を実行してrequiretty
プログラムに対してこの機能をオフにできます。
Defaults!/path/to/program !requiretty
あなたの場合はbashを使用しているので、このパスはから取得するすべてのものになりますwhich bash
。
答え2
/etc/sudoers
sudoがファイルにttyを要求しないことを確認する必要があります(requiretty
設定しないでください)。