Festlegen der Umgebungsvariable für die Bash-/Zsh-Vervollständigung

Festlegen der Umgebungsvariable für die Bash-/Zsh-Vervollständigung

Ich verwende GNU Pass mit Bash/Zsh-Vervollständigung. Das heißt, wenn ich etwas eingebe, pass a[TAB]schlägt die Shell mir die verfügbaren Passwörter vor, die mit beginnen a.

Ich habe zwei GNU-Pass-Verzeichnisse. Wenn ich das nicht standardmäßige Verzeichnis verwenden möchte, muss ich festlegen PASSWORD_STORE_DIR. Um die Shell-Vervollständigung zu erhalten, muss ich festlegen export PASSWORD_STORE_DIR=~/.password-store-non-defaultund dann wie gewohnt Pass verwenden.

Dies ist lästig, da ich häufig zwischen den beiden Verzeichnissen wechseln muss.

Gibt es eine Möglichkeit, einen Alias ​​oder Shell-Befehl zu erstellen, der diese Variable festlegt, die Vervollständigungen bereitstellt und die Variable dann wieder auf ihren ursprünglichen Wert zurücksetzt?

Zum Beispiel

alias otherpass=...
otherpass a[TAB]

Würde für Vervollständigung sorgen, ohne ein anderes festzulegen PASSWORD_STORE_DIR.

Antwort1

In Zsh können Sie einfach eine Tastenkombination daran binden, etwa so:

# Bind the command to Ctrl-P.
bindkey '^P' complete-password

# Create a completion widget for the command.
zle -C complete-password complete-word complete-password

# Create a function to implement the widget.
complete-password() {
  export PASSWORD_STORE_DIR=~/.password-store-non-default
  _main_complete $@
  unset PASSWORD_STORE_DIR
}

Durch Drücken von wird dann CtrlPdie Vervollständigung mit dem nicht standardmäßigen Passwortspeicher durchgeführt. (Kein TabDrücken erforderlich.)

verwandte Informationen