sudoを使用してカスタムコマンドを実行しても機能しません。

sudoを使用してカスタムコマンドを実行しても機能しません。

bashでカスタムコマンドを生成して~/.local/bin配置しました~/.profile。端末からコマンドを実行すると問題はありませんが、出力として実行しようとするとsudo次のようになります。sudo

sudo: my_command: command not found

どうすればいいのか教えていただけますか?

答え1

試してみてくださいsudo -E。これは環境を保護できますが、すべての状況では機能しない可能性があります。
.profileで設定された環境変数が必要であることを考慮して、使用sudo -iが必要なログインを実行してみてください。それでもオプションなしで使用-c my_command
するには、/ etc / sudoersファイルを確認し、secure_path変数が設定されていることを確認してください。sudo my_commandコマンドを含むパスを含みます。これを行うには、通常、利用可能な場所に配置する必要があります。/usr/local/bin

答え2

sudoあなたと異なるPATHがあります。sudo読まないでください~/.profile

確認してください:

$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 

得られた出力を比較して含まれていないことを確認してください~/.local/bin

必要なものを達成するには、次のことをお勧めします。

sudo ~/.local/bin/YourBashScript

技術的にPATHを変更することもできますが、sudoこれが最善の方法ではない可能性があります。

関連情報