我是 Linux 的新手,刚开始使用它pass
来管理我的密码。我试图保持我的主目录相当干净,但pass
创建了 2 个点文件(.gnupg
和.password-store
),我不知道如何将它们移动到其他目录(.local
/ .config
/ .cache
)。我知道我可以链接它们,但这并不能解决 中的点文件问题~/
。
$ ls -a
.cache
.config
Desktop
Documents
Downloads
.gnupg
.local
Music
.password-store
Pictures
Videos
指定问题:有没有办法将移动.gnupg
到.password-store
另一个目录并仍然使用它们?
二进制中有PREFIX
一个变量定义它,但我真的不知道如何改变它。
PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
答案1
这段shell代码的含义:
PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
is:设置PREFIX
为 的值,若未设置则$PASSWORD_STORE_DIR
使用 的默认值。$HOME/.password-store
$PASSWORD_STORE_DIR
也就是说,您可以将环境变量设置PASSWORD_STORE_DIR
为您想要设置PREFIX
为所需值的任何路径。因此,在您的.profile
或任何您喜欢管理环境变量的地方,设置:
export PASSWORD_STORE_DIR="$HOME/.config/password-store"
这是有记录的。检查man 1 pass
:
ENVIRONMENT VARIABLES
PASSWORD_STORE_DIR
Overrides the default password storage directory.
如果应用程序支持移动点文件,请随意使用。毕竟,它们宣传了这种支持,如果它不起作用,那可能就是一个错误,需要修复。
同样如此gpg
,使用GNUPGHOME
环境变量:
GNUPGHOME
If set directory used instead of "~/.gnupg".
答案2
推荐:不必担心应用程序在何处创建其 .dot 配置文件。这在您日常的计算机使用中也无关紧要:这些配置文件在大多数情况下都不在您的视线范围内。
为什么:应用程序决定将其用户配置文件放在何处。旧惯例是将配置文件直接放在主文件夹中,就像pass
似乎做的那样,即$HOME/.password-store
。最近,惯例是将此类配置移到.config
indeed 下。
如果您想要接管用户配置存储位置的管理,在许多情况下您需要编辑源代码。一旦您开始这样做,您还需要不断修补软件的更新。因此,一般建议:将配置文件的放置位置留给开发人员。开发人员反过来也要遵守当前的惯例:否则他/她可能会收到很多错误请求。
无论如何我都想将其更改为pass
:不过,出于学习目的,在 的情况下,您可以轻松更改它pass
。这是开源的。在这种情况下,目录是在pass
脚本的 bash 源代码中定义的。原则上,您可以将其更改为:
PREFIX="${PASSWORD_STORE_DIR:-$HOME/.config/password-store}"
由于PREFIX
脚本中变量的分配方式,有一种更安全的方法,不需要更改脚本(感谢 muru 的评论)。即PASSWORD_STORE_DIR
在启动之前设置或导出变量pass
,即
PASSWORD_STORE_DIR=$HOME/.config/password-store
在脚本中,如果定义了变量 PREFIX,则它将采用 的值PASSWORD_STORE_DIR
,否则将设置为$HOME/.password-store
。
这可能是任何需要的更改。任何文件夹都是通过开关创建的,因此如果尚不存在整个文件夹结构(例如,在刚安装的系统上),-p
则会创建整个文件夹结构。.config
这是开源的,所以你可以尝试:以新名称复制原始文件,进行编辑并查看效果。如果不行,你仍然可以复制回原始版本。
请注意,对于每个想要更改的应用程序,您都需要再次研究源代码。在某些情况下,可能需要更改多行。
最后,再说一遍...别费心了。
答案3
如果点文件是由程序直接在您的主目录中创建的,则请不要管它们。
您的应用程序将不知道如何映射到“备用”位置,并且由不同的应用程序制作大量点文件的情况并不罕见。点文件和点文件夹旨在用于存储应用程序数据,普通用户看不到(即文件浏览器默认不显示隐藏文件)。
除非您使用的应用程序允许您配置自定义数据目录,否则不要管点文件。大多数应用程序没有调整或移动文件或重新配置查找数据位置的机制 - 因此不要管它们。