pass (or password-store) is a neat program that helps you manage passwords in files encrypted with gpg.
The comand as it is already offers a lot: you can encrypt different directories to different sets of keys to have finer-grain control over sharing passwords; you can also use git to fetch and push password changes between people.
However, it's built without the idea of having multiple password repositories. It is possible to do so, but you have to know a little trick to do it. This post describes the trick that is already well known and published out there, but adds to it the possibility to use bash-completion with that trick.
The trick
That's super simple and it's documented in the pass(1) man page. In order to use an alternative password store, you need to set an environment variable:
export PASSWORD_STORE_DIR=~/.password-store-alternate
Then the next calls to pass
will interact with this alternat store.
Setting up an alias to make it easier to interact with multiple stores
Then you think: I don't want to always set and unset the environment variable!
Easily fixed: just creat an alias that sets the variable only for each call to pass:
alias altpass='PASSWORD_STORE_DIR=~/.password-store-alternate pass'
Using bash-completion with your alias
Ok here comes the new detail (what was above is common knowledge within the
pass users community). That alias suffers from not being able to auto-complete
sub-command names or password entry/directory names. You can enable it by
adding the following contents to the ~/.bash_completion
file (create it if it
doesn't exist):
# Add alias for alternate password-store
. /usr/share/bash-completion/completions/pass
_altpass() {
# trailing / is required for the password-store dir.
PASSWORD_STORE_DIR=~/.password-store-alternate/ _pass
}
complete -o filenames -o nospace -F _altpass altpass
There you have it. Now start a new terminal, and try using tab to
auto-complete. The original pass
command will still be auto-completing for
the default password store.