sudo タイムアウト情報で Zsh プロンプトを更新する

sudo タイムアウト情報で Zsh プロンプトを更新する

sudo私の資格情報がキャッシュされたかどうかZshプロンプトに表示したいと思います。これまで私が達成したいことを説明するのに役立ちます。

function sudo-warning {
    if sudo -nl &>/dev/null; then
        echo -n " %{${fg[red]}%}

答え1

これは、タイムアウトに達したかどうかを知らせるのに有効なようです。

sudo-expired() [[ $(
  trap "" XFSZ
  limit filesize 0
  LC_ALL=C sudo -n true 2>&1) = *"password is required" ]]

つまり、ファイルサイズ制限を0に設定すると、タイムスタンプファイルの更新は失敗しますが、制限が期限切れにならない限り、パスワードがsudo必要かどうかがわかります。

次のように使用してください(いくつかの単純化を含む):

sudo-warning()
  if sudo-expired; then
    echo '%F{blue}

関連情報