我已经使用 pass 来存储密码有一段时间了,但现在我想将我的密码存储从默认位置移动。根据手册页,将PASSWORD_STORE_DIR
变量设置为所需的路径就足以覆盖默认路径,但在我的情况下,这没有效果。将.password-store
文件夹移动到新位置并设置环境变量后,执行命令pass
会导致“错误:密码存储为空。尝试“pass init”。”。即使只是重命名.password-store
内部主目录:
$ cd
$ mv .password-store .pass
$ PASSWORD_STORE_DIR=/home/bakhtin/.pass #bakhtin is the user name
$ pass
Error: password store is empty. Try "pass init".
关于问题可能是什么的任何想法吗?我确保变量名称等中没有拼写错误。
答案1
由于变量及其值需要由pass
从 shell 启动并与其分开运行的进程访问,因此该变量需要是环境变量。环境变量由子进程继承,但其他shell变量不被继承。
就您而言,您只是忘记使用export
变量PASSWORD_STORE_DIR
将其标记为环境变量。
export PASSWORD_STORE_DIR=~bakhtin/.pass
export PASSWORD_STORE_DIR
如果您已经为其分配了值,则也可以仅将该变量标记为环境变量。
将变量传递到环境中的另一种方法pass
是在调用之前编写赋值,甚至无需在调用 shell 中将其创建为 shell 变量pass
:
PASSWORD_STORE_DIR=~bakhtin/.pass pass
这会为进程设置变量的值pass
,但不会在当前 shell 中创建变量。