Basándose en mightybyte's answer para aquellos que no se sienten cómodos con * nix scripting cáscara, aquí está un guión de trabajo:
#!/bin/sh
PGPASSFILE=/tmp/pgpasswd$$
echo "myserver:5432:mydb:jdoe:password" > $PGPASSFILE
chmod 600 $PGPASSFILE
export PGPASSFILE
psql mydb
rm $PGPASSFILE
El doble signo de dólar ($$
) en /tmp/pgpasswd$$
en La línea 2 agrega el número de ID del proceso al nombre del archivo, de modo que este script se puede ejecutar más de una vez, incluso de forma simultánea, sin efectos secundarios.
Nota el uso del comando chmod
en la línea 4 - al igual que el "no es un archivo normal" error que mightybyte descrito, también hay un "permisos" error si esto no se hace.
En la línea 6, no tendrá que utilizar el -h
miservidor, la -p
myport, o -U
jperez bandera de si utilizar los valores por defecto (localhost : 5432) y sólo tienen un usuario de base de datos.Para varios usuarios, pero la conexión (por defecto) cambiar esa línea para
psql mydb jdoe
No se olvide de hacer que el script ejecutable con
chmod +x runpsql
(o lo que llamó el archivo de script)
Terminé yendo a la variable de entorno PGPASSWORD. Esto encajó perfectamente mi uso. Simple y autónomo en el guión. –