Настройка переменной среды для завершения bash/zsh

Настройка переменной среды для завершения bash/zsh

Я использую gnu pass с автодополнением bash/zsh. Это означает, что когда я печатаю, pass a[TAB]оболочка предлагает мне доступные пароли, начиная с a.

У меня есть два каталога gnu-pass, когда я хочу использовать каталог не по умолчанию, мне нужно установить PASSWORD_STORE_DIR. Чтобы получить автодополнение оболочки, мне нужно export PASSWORD_STORE_DIR=~/.password-store-non-defaultи затем использовать pass как обычно.

Это неудобно, так как мне приходится часто переключаться между двумя каталогами.

Есть ли способ создать псевдоним или команду оболочки, которая установит эту переменную, предоставит дополнения, а затем вернет этой переменной ее исходное значение?

Например

alias otherpass=...
otherpass a[TAB]

Обеспечит завершение без установки другого PASSWORD_STORE_DIR.

решение1

В Zsh вы можете просто привязать к нему сочетание клавиш, например так:

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

Затем нажатие CtrlPвыполнит завершение с сохранением пароля, отличного от пароля по умолчанию. ( TabНажатие не требуется.)

Связанный контент