Configuración de la variable de entorno para la finalización de bash/zsh

Configuración de la variable de entorno para la finalización de bash/zsh

Estoy usando gnu pass con finalización de bash/zsh. Esto significa que cuando escribo, pass a[TAB]el shell sugiere qué contraseñas tengo disponibles a partir de a.

Tengo dos directorios gnu-pass, cuando quiero usar el directorio no predeterminado, necesito configurar PASSWORD_STORE_DIR. Para completar el shell, necesito export PASSWORD_STORE_DIR=~/.password-store-non-defaulty luego usar pass como de costumbre.

Esto es molesto ya que frecuentemente necesito cambiar entre los dos directorios.

¿Hay alguna manera de crear un alias o un comando de shell que establezca esa variable, proporcione las terminaciones y luego vuelva a cambiar esa variable a su valor original?

Por ejemplo

alias otherpass=...
otherpass a[TAB]

Proporcionaría finalización sin establecer un archivo PASSWORD_STORE_DIR.

Respuesta1

En Zsh, simplemente puedes vincularle un atajo de teclado, como este:

# 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
}

Luego, al presionar CtrlPse completará con el almacén de contraseñas no predeterminado. (No es Tabnecesario presionar).

información relacionada