Bash
如何將變數從 shell 腳本傳遞到我的 .muttrc?
我想
mutt
(mutt-kz
實際上——我很想遷移到,neomutt
但這是一個更大的項目)來獲取我的 SMTP 密碼,pass
所以我不必將它以明文形式儲存在我的配置文件中,但我不是確定如何正確地將密碼傳遞到我的.muttrc
.這就是我所擁有的
.muttrc
:source ~/.mutt/pass.sh| set smtp_pass = $my_pass
然後
.mutt/pass.sh
包含:#! /bin/bash my_pass=$(pass Example/user)
如果我從命令行添加並執行它,它會回顯我的密碼
echo ${my_pass}
。pass.sh
當我啟動時,系統
mutt-kz
會提示我解鎖我的pass
gpg 密鑰,所以有些東西正在工作,但是當我嘗試從 Mutt 發送郵件時,它會詢問我的 SMTP 密碼,如果我不提供它就會失敗,消息不會發送:( “SASL 身份驗證失敗”)那麼……我如何正確地將變數從我的 shell 腳本傳遞給我的
.muttrc
?
該程序
~/.mutt/pass.sh
必須產生如下所示的輸出set my_pass = swordfish
所以它可能是這樣的
#!/bin/sh echo "set my_pass = swordfish"
請注意,如果您的密碼包含某些特殊字元(
\'"
和空格),則需要引用它。例如,如果您的密碼在文本文件~/passwords/smtp.txt
中,您可以使用:#!/bin/sh ~/passwords/smtp.txt sed 's/["$`\\]/\\&/g; s/^/set my_pass = "/; s/$/"/'
對於密碼
sword\fish
,這將列印出來set my_pass="sword\\fish"
。如果您使用 Gnome-keyring 來儲存您的密碼,那麼您可以使用該
secret-tool
實用程序從密鑰環中讀取您的密碼。例如,這是我用於 Office 365 密碼的密碼(密碼不包含任何需要引用的特殊字元):source 'printf "set imap_pass="; secret-tool lookup action_url https://login.microsoftonline.com/common/login |'