如何通过命令行设置psql的PROMPT1提示符?
psql命令行设置PROMPT1不生效的问题及解决
问题描述
根据文章《如何自定义PostgreSQL/psql提示符》,可以通过\set PROMPT1 foo设置psql提示符,但在命令行执行以下命令后:
psql --set=ZZZ=abc --set=PROMPT1=foo ...
发现变量ZZZ已成功设置为abc,但PROMPT1并未生效,执行\set查看结果如下:
postgres=# \set PROMPT1 = '%n%R%#%x ' ZZZ = 'abc'
原因分析
psql启动时会优先加载用户的psql配置文件(通常是~/.psqlrc),如果配置文件中存在\set PROMPT1的设置,会覆盖命令行通过--set参数设置的值。这是因为命令行的--set参数是在配置文件加载之前执行的,后续配置文件的设置会将其覆盖。
解决方法
- 直接修改
~/.psqlrc文件,移除或调整其中的PROMPT1设置,这样命令行的--set参数就能生效; - 启动psql时添加
--no-psqlrc参数,跳过加载配置文件,示例命令:psql --no-psqlrc --set=ZZZ=abc --set=PROMPT1=foo ... - 若需要保留配置文件的其他设置,仅覆盖
PROMPT1,可以在启动时通过--command参数追加设置命令,示例:psql --set=ZZZ=abc --command="\set PROMPT1 foo" ...
内容的提问来源于stack exchange,提问作者Mark Harrison
相关产品推荐
相关产品推荐

