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
これが最善の方法ではない可能性があります。