Yessica:
2018-11-06 4:05 GMT+01:00 Yessica Brinkmann <yessica.brinkm...@gmail.com>: ... > Tengo el psql dentro del directorio postgresql-8.3.23/src/bin/psql .... > Y lo ejecuto ingresando a dicho directorio y escribiendo: > ./psql template1 por ejemplo. > > El caso es que ahora necesito correr un conjunto de scripts sql que están en > un directorio aparte, con el psql > Es decir, necesito escribir por ejemplo: > psql $CONNSTR -U $SYSDBA -d postgres < pgsqlds2_create_db.sql > El archivo pgsqlds2_create_db.sql se encuentra en el directorio > home/yessica/ds2 > El caso es que cuando trato de ejecutar el script me responde el bash con un > error, diciendo que el psql no existe. > Por eso creo que necesito agregar seguramente el psql como una variable de > entorno, para poder llamarla desde el bash, para poder ejecutar un script > sql que se encuentra en un directorio específico. Problema de Unix, no de postgres. Como ya sabras los shell de unix buscan cualquier comando que ejecutes SIN separadores de directorio en $PATH. Segun tu ejemplo el script lo ejecuta asi ( hay algunos hechos de forma que usan $PSQL y lo inicializan a psql, que tienen otras soluciones ). Lo unico que tienes que hacer es poner el directorio ( COMPLETO, en tu ejemplo das un nombre relativo, probablemente lo que quieres es $HOME/postgresql-8.3.23/src/bin ) en el PATH, normalmente al prinpio por si tienes algun otro psql en el sistema ( yo suelo optar en estos casos por 'export PATH=$HOME/postgresql-8.3.23/src/bin:$PATH' ). Unas indicaciones extra. Primero, la presencia de /src/ en tu nombre de archivo indica que probablemente no has instalado el postgres y estas trabajando sobre el compilado directo. Eso suele dar algun problemilla. Segundo, si no quieres contaminar el entorno de ru shell de usuario metieno lo del PATH en el .bashrc (ya que probablemente sea bash lo que usas ), puedes o bien hacer una asignacion local ( 'PATH=$HOME/postgresql-8.3.23/src/bin:$PATH <el script>' ), que te pone el PATH durante la ejecucion de ese comando o, si son varios, hacer un subshell ( haces bash-enter, modificas el path ahi, ejecutas lo que quieras, haces exit para volver al principal y vuelves a tu entorno 'limpio' ). Por ultimo, puedes usar nombres completos, cosas como '$HOME/postgresql-8.3.23/src/bin/psql $CONNSTR -U $SYSDBA -d postgres < $HOME/ds2/pgsqlds2_create_db.sql', que te deberian funcionar desde cualquier punto del filesystem. Francisco Olarte.