配置时reportbug
,我可以选择将远程 smtp 服务的密码存储在$HOME/.reportbugrc
.如何让它使用 GNOME Web (Epiphany) 或 GNOME 密钥环中的 Evolution 存储的现有密码,以便$HOME/.reportbugrc
在 GNOME 密钥环中的密码发生更改时不需要更新?
secret-tools
我发现我可以使用包提供的命令从 GNOME 密钥环读取密码libsecret-tools
,然后使用命令替换with$(…)
调用secret-tools
并使用其输出,如下所示:
$ reportbug --smtppasswd=$(secret-tool lookup uri https://webmail.example.invalid)
或这个:
$ reportbug --smtppasswd=$(secret-tool lookup target_origin https://webmail.example.invalid username [email protected])
不幸的是,reportbug
似乎没有在 中执行替换~/.reportbugrc
。我尝试这样:
smtppasswd "$(secret-tool lookup target_origin https://webmail.example.invalid username [email protected])"
有解决方法吗?
答案1
最终在 中定义了一个别名~\.bash_aliases
。
alias reportbug-pass='reportbug --smtppasswd="$(secret-tool lookup eds-origin evolution-data-server e-source-uid 7f1e149e069bd66ab5aa1a734baa113943cdf0ee)"'
使用该别名而不是reportbug
直接调用会调用已传递给它的 reportbug --smtppasswd
。现在,如果我想将 SMTP 密码传递给reportbug
,我可以键入该别名。您可以将其他参数传递给它,例如报告的包的名称,就像您所做的那样reportbug
。
$ reportbug-pass
通过在中定义函数可以实现相同的结果,而不是别名~\.bash_aliases
function reportbug-pass() {
reportbug --smtppasswd="$(secret-tool lookup eds-origin evolution-data-server e-source-uid pdljjhvbuo6uvc7mydavpmbjqqhxqq2jyhqdndpmcvamknbih8cifgfg)" "$@"
}
在这个函数中,"$@"
参数消耗传递给它的参数,例如,您可以传递包的名称。
在这种情况下,无论是别名还是函数,当您从命令行调用它时都会发生针对密钥环的查询。如果密钥环被锁定,您会收到解锁密钥环的常规图形提示。