psqlはデフォルトで若干の変数が設定されており、起動直後から\setコマンドで分かります。接続先DBやポートを知るのに便利。ただし変数VERSIONは接続先DBでなくpsql自体の。DBのバージョンを知るにはクエリが必要なので、この際、最初から両方を変数に入れてみます。psqlの初期設定と変数を使う簡単な例を兼ねて。


↓ 変数VERSIONと、DBのバージョンが異なる例。psqlWindowsネイティブ、サーバがCygwin版。自分は逆のパターンが最近多いけど。
> psql -U postgres -p 5952
psql (9.5.3, サーバー 9.5.2)
"help" でヘルプを表示します.

postgres=# \set
AUTOCOMMIT = 'on'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = 'PostgreSQL 9.5.3, compiled by Visual C++ build 1800, 64-bit'
DBNAME = 'postgres'
USER = 'postgres'
HOST = 'localhost'
PORT = '5952'
ENCODING = 'SJIS'

postgres=# select version();
                                    version
-------------------------------------------------------------------------------- 
 PostgreSQL 9.5.2 on x86_64-unknown-cygwin, compiled by gcc (GCC) 5.3.0, 64-bit
(1 行)


psqlVERSION変数はコンパイル時にPG_VERSION_STRがセットされ
(startup.c166行目あたり)、サーバなど他のプログラムと共通のようです。詳細は下記参照。

»Postgres 9.4 feature highlight - extra string version in configure"PG_VERSION_STR and PG_VERSION are used to reference the version number of all the binaries launched with –version."

↓ 実行ファイルをバイナリエディタ(Stirling)で開くと、確かにVERSION変数が文字列で入ってます。VCpsql.exe、Cygwinpsql.exeの順。


本題。
13日にも書いたけど、psqlは起動時に設定ファイルを読み込みます。そのデフォルトパスがWindowsでは%APPDATA%\postgresql\psqlrc.conf、Linux等では~/.psqlrc。環境変数PSQLRCがあれば設定ファイルパスと見なすので(ファイル名は何でもいい)自由度が高いです。

今回はWindowsでネイティブのpsqlを例に。とりあえず適当な場所に ↓ こんな設定ファイルを置きます。変数名(cver, sver)はお好みで。
-- r:\.psqlrc
\set cver :VERSION
\unset VERSION
select version() as sver \gset 


まず既存の変数VERSIONを別の変数にコピー。続いてVERSIONは削除。最後にDBのバージョンを得るクエリを\gsetで実行。クエリでの列名が変数名になります。

↓ 結果の確認。一時的に環境変数PSQLRCを設定してからpsqlを起動し、\setコマンドで変数一覧を出します(表示は設定された順)。
-- on Command Prompt
> set PSQLRC=r:\.psqlrc
> psql ...
psql (9.5.3, サーバー 9.5.2)
"help" でヘルプを表示します.

postgres=# \set
AUTOCOMMIT = 'on'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
DBNAME = 'postgres'
USER = 'postgres'
HOST = 'localhost'
PORT = '5952'
ENCODING = 'SJIS'
cver = 'PostgreSQL 9.5.3, compiled by Visual C++ build 1800, 64-bit'
sver = 'PostgreSQL 9.5.2 on x86_64-unknown-cygwin, compiled by gcc (GCC) 5.3.0, 64-bit' 

変数の中身は「\echo :変数名」で見れますが、今回は\setの方が楽。