我想从现有的 shell 环境变量中设置一个 psql 变量,我可以在以后的psql
命令中使用它。
我找到了\set
元命令,但我无法让它在 Linux 中使用现有的环境变量:
user@localhost# MY_DB='test_database'
user@localhost# sudo -u postgres psql
\set dbname ${MY_DB}
\set
...
dbname = '${MY_DB}'
而我想dbname = 'test_database'
在最后一行这样我就可以使用它或像这样的例子:\connect :dbname;
我怎样才能在 debian 11 上使用 pg 15 实现这一目标?
这对我帮助不大,因为
\set dbname `echo ${MY_DB}`
发出的是一个空字符串。
这也不是,因为我只想设置我的 psql 变量一次,以避免冗余并在大量命令中重用它,而不是在每个命令中psql
多次设置它。-v
psql
psql 版本 15 提供
\getenv
元命令来有效地执行此操作:请注意,在启动 psql 的 shell 中定义一个变量是不够的:变量需要被导出(参见
export
POSIX shell)才能从子进程访问。这就是为什么在你的例子中,\set dbname `echo ${MY_DB}`
产生一个空字符串。无论您想使用更快的\getenv
还是echo
在子 shell 中,您都应该这样做export MY_DB='test_database'
。