From 34c978442c55dd13a3a8c6b90fd4380dad02f3da Mon Sep 17 00:00:00 2001 From: Andrew Dunstan <andrew@dunslane.net> Date: Sat, 3 Mar 2012 16:39:26 -0500 Subject: [PATCH] Provide environment overrides for psql file locations. PSQL_HISTORY provides an alternative for the command history file, and PSQLRC provides an alternative location for the .psqlrc file. --- doc/src/sgml/ref/psql-ref.sgml | 30 ++++++++++++++++++++++++++++++ src/bin/psql/input.c | 9 +++++++++ src/bin/psql/startup.c | 10 +++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 55aa5f2ac1d..fdeaea60404 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -3340,6 +3340,26 @@ PSQL_EDITOR_LINENUMBER_ARG='--line ' </listitem> </varlistentry> + <varlistentry> + <term><envar>PSQL_HISTORY</envar></term> + + <listitem> + <para> + Alternative location for the command history file. Tilde ("~") expansion is performed. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><envar>PSQLRC</envar></term> + + <listitem> + <para> + Alternative location of the user's .psqlrc file. Tilde ("~") expansion is performed. + </para> + </listitem> + </varlistentry> + <varlistentry> <term><envar>SHELL</envar></term> @@ -3390,6 +3410,11 @@ PSQL_EDITOR_LINENUMBER_ARG='--line ' to set up the client or the server to taste (using the <command>\set </command> and <command>SET</command> commands). </para> + <para> + The location of the user's <filename>~/.psqlrc</filename> file can + also be set explicitly via the <envar>PSQLRC</envar> environment + setting. + </para> </listitem> <listitem> @@ -3411,6 +3436,11 @@ PSQL_EDITOR_LINENUMBER_ARG='--line ' <filename>~/.psql_history</filename>, or <filename>%APPDATA%\postgresql\psql_history</filename> on Windows. </para> + <para> + The location of the history file can + also be set explicitly via the <envar>PSQL_HISTORY</envar> environment + setting. + </para> </listitem> </itemizedlist> </refsect1> diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c index d77a731c2ec..880e7e6511d 100644 --- a/src/bin/psql/input.c +++ b/src/bin/psql/input.c @@ -285,6 +285,15 @@ initializeInput(int flags) history_lines_added = 0; histfile = GetVariable(pset.vars, "HISTFILE"); + + if (histfile == NULL) + { + char * envhist; + envhist = getenv("PSQL_HISTORY"); + if (envhist != NULL && strlen(envhist) > 0) + histfile = envhist; + } + if (histfile == NULL) { if (get_home_path(home)) diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 166c227d6b6..b5664dfd1d3 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -591,6 +591,7 @@ process_psqlrc(char *argv0) char rc_file[MAXPGPATH]; char my_exec_path[MAXPGPATH]; char etc_path[MAXPGPATH]; + char *envrc; find_my_exec(argv0, my_exec_path); get_etc_path(my_exec_path, etc_path); @@ -598,7 +599,14 @@ process_psqlrc(char *argv0) snprintf(rc_file, MAXPGPATH, "%s/%s", etc_path, SYSPSQLRC); process_psqlrc_file(rc_file); - if (get_home_path(home)) + envrc = getenv("PSQLRC"); + + if (envrc != NULL && strlen(envrc) > 0) + { + expand_tilde(&envrc); + process_psqlrc_file(envrc); + } + else if (get_home_path(home)) { snprintf(rc_file, MAXPGPATH, "%s/%s", home, PSQLRC); process_psqlrc_file(rc_file); -- GitLab