aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2012-03-03 16:39:26 -0500
committerAndrew Dunstan <andrew@dunslane.net>2012-03-03 16:39:26 -0500
commit34c978442c55dd13a3a8c6b90fd4380dad02f3da (patch)
tree898bacdf3a1253bb4e38158d0d379c82ea146a8d
parentb59ca98209d45f5689fe9de22a7429d4cf09d40c (diff)
downloadpostgresql-34c978442c55dd13a3a8c6b90fd4380dad02f3da.tar.gz
postgresql-34c978442c55dd13a3a8c6b90fd4380dad02f3da.zip
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.
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml30
-rw-r--r--src/bin/psql/input.c9
-rw-r--r--src/bin/psql/startup.c10
3 files changed, 48 insertions, 1 deletions
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
@@ -3341,6 +3341,26 @@ PSQL_EDITOR_LINENUMBER_ARG='--line '
</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>
<listitem>
@@ -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);