![Festlegen der Umgebungsvariable für die Bash-/Zsh-Vervollständigung](https://rvso.com/image/1628432/Festlegen%20der%20Umgebungsvariable%20f%C3%BCr%20die%20Bash-%2FZsh-Vervollst%C3%A4ndigung.png)
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-default
und 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.)