私は最終的にこれをエイリアスで解決しました:
alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'
変数がエイリアスの定義時ではなく、呼び出し時に展開されるように、必ず単一引用符を使用してください。
この:
- HOMEを保持します(それ以外の場合は/ rootに設定されます)
- PATHを保持します(そうでない場合はsudersで「安全な」パスに設定されます)
- LD_LIBRARY_PATH の現在の値を保持します(それ以外の場合は空白になります)
(あなたは物事がでに設定され得るものを見ることができます。sudo bash -c "echo $HOME"
)
私はカスタムドライバーを使用しており、ドライバーにアクセスするには常にテストプログラムをsudoする必要があります。システム領域にライブラリのテストバージョンをインストールしたくないので、必要に応じてLD_LIBRARY_PATHを使用して特定のテストディレクトリをセットアップします。固定のLD_LIBRARY_PATHを設定することはできません。変更して現在の設定を維持できるようにする必要があります。PATHとHOMEを保持することで、作業環境-スクリプトとディレクトリ構造にアクセスできます。
このエイリアスにより、sudoersに包括的な権限を付与する必要がなくなります。どうせsudoersの設定に関係なく、LD_LIBRARY_PATHの回避策は明らかにありません。スクリプト内ではsudoは機能しませんが、必要に応じてハードコーディングできます。
~/.bashrc