我正在尝试编写.pgpass
文件,如果它在postgres用户的主目录中不存在。
目前我有
local PASS="~postgres/.pgpass"
echo "*:*:*:*:$PWD" >> $PASS
并且~postgres/.pgpass: No such file or directory
失败。
但是,不使用变量有效。
echo "*:*:*:*:$PWD" >> ~postgres/.pgpass
两者之间的区别是什么?如何将文件存储在变量中并使其正常工作?
答案 0 :(得分:2)
local PASS=~postgres/.pgpass
echo "*:*:*:*:$PWD" >> "$PASS"
答案 1 :(得分:-1)
有几件事,
~
是一个shell扩展。 ~
并非作为路径存在。
f="~/"
ls $f
会出错
ls: cannot access '~/': No such file or directory
相反,请使用变量$HOME
这是一个拼写错误,你想要在Unix上~/.pgpass
或$HOME/.pgpass
。来自the pg docs on the Password File
用户主目录中的文件.pgpass或PGPASSFILE引用的文件可以包含在连接需要密码时使用的密码(否则未指定密码)。在Microsoft Windows上,该文件名为%APPDATA%\ postgresql \ pgpass.conf(其中%APPDATA%引用用户配置文件中的Application Data子目录)。