sudo
2つ欲しいです。 1)キャッシュされた資格情報を入力するたびに更新して定期的に使用し続ける場合は、パスワードを求めないでくださいsudo
。 2)(誰か)エイリアスを使用するときはsudoを使用できます。
資格情報を更新するには、このタスクを実行する必要がありますsudo -v
(コマンドは必要ありません)。
たとえば、私は/usr/bin/vi
1つ/usr/bin/nvim
のエイリアスを持っています。
alias vi='/usr/bin/nvim'
したがって、root以外のユーザーとして入力すると、次のようになります。
sudo vi /etc/fstab
それから私は次を実行したいと思います。
sudo -v
sudo /usr/bin/nvim /etc/fstab
私はbash関数を生成してこれを達成しようとしました。
function sudo()
{
command sudo -v
command sudo "$@"
}
ただし、これによりエラーが発生します。
sudo: vi: command not found
つまり、エイリアスはvi
関数内では"$@"
拡張されませんsudo
。
この問題をどのように解決できますか?
ベストアンサー1
おそらく
function sudo()
{
command sudo -v
if [[ $(type -t "$1") == "alias" ]]; then
set -- bash -ic "$(alias "$1"); $(printf "%q " "$@")"
fi
# what am I about to execute
printf "%q " sudo "$@"; echo
# and do it
command sudo "$@"
}