sudo -uを使うシェルスクリプトでコマンドを実行する

sudo -uを使うシェルスクリプトでコマンドを実行する

私は非常に怠惰で、ソフトウェアを自動的にコンパイルするスクリプトを書くことを好みます。私にとっては、これらのスクリプトはかなり長くなる可能性があるため、rootとして実行するのは簡単ですが、個々のソフトウェアを権限のないユーザーにコンパイルする方が簡単です(したがってsudo -u)。これまではこれを行うことができましたが、現在は条件が評価されていないため、問題が発生しています。だから、次のようになります。

sudo -u name if [ ! -f $HOME/file ];then echo "file not found";fi

本当に死んでいます...ただthen...これをどのように修正できますか?

ベストアンサー1

あなたはできます:

sudo -H -u name bash -c '[ -f "$HOME"/file ] || echo "file not found"'

[ -f "$HOME"/file ] || echo "file not found"あなたが望むように正確にしてくださいif..then

からman sudo

-H、--ホームページ設定

セキュリティー・ポリシーが、HOME 環境変数をターゲット・ユーザーのパスワード・データベース項目に指定されたホーム・ディレクトリーに設定するように要求します。ポリシーによっては、これがデフォルトの動作である可能性があります。

おすすめ記事