Ich habe PostgreSQL installiert und es funktioniert in Ordnung. Als ich jedoch eine Sicherung wiederherstellen wollte, bekam ich den Fehler -bash: psql: command not found
:
[[email protected] ~]# su postgres
[[email protected] root]$ psql -f all.sql
bash: psql: command not found
[[email protected] root]$
Was habe ich falsch gemacht?
vielleicht ist psql nicht in der PATH
des postgres-Benutzers. Verwenden Sie den Befehl locate , um herauszufinden, wo sich psql befindet, und stellen Sie sicher, dass sich der Pfad in PATH
für den postgres-Benutzer befindet.
export PATH=/usr/pgsql-9.2/bin:$PATH
Die Programmdatei psql
befindet sich im Verzeichnis /usr/pgsql-9.2/bin
. Dieses Verzeichnis ist standardmäßig nicht im Pfad enthalten. Daher müssen wir unserem Shell (terminal) -Programm mitteilen, wo es psql
gibt. Wenn die meisten Pakete installiert sind, werden sie zu einem vorhandenen Pfad hinzugefügt, z. B. /usr/local/bin
, jedoch nicht zu diesem Programm.
Wir müssen also den Pfad des Programms zur Shell PATH-Variablen hinzufügen, wenn wir nicht bei jeder Ausführung den vollständigen Pfad zum Programm eingeben müssen.
Diese Zeile sollte normalerweise zum Shell-Startskript hinzugefügt werden, das sich für die Bash-Shell in der Datei ~/.bashrc
befindet.
Falls Sie es unter Fedora oder CentOS ausführen, funktionierte dies bei mir (PostgreSQL 9.6):
Im Terminal:
$ Sudo visudo -f /etc/sudoers
folgenden Text ändern von:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
zu
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin
ausfahrt, dann:
$ printenv PATH
$ Sudo su postgres
$ psql
Um das postgreSQL-Terminal zu beenden, müssen Sie folgende Ziffern eingeben:
$ \q
Quelle: https://serverfault.com/questions/541847/why-doesnt-Sudo-know-where-psql-is#comment623883_541880
Wenn Sie die Postgres Mac-App (von Heroku) und Bundler verwenden, können Sie die pg_config direkt in der App zu Ihrem Bundle hinzufügen.
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
... und dann erneut Bundle ausführen.
Hinweis: Überprüfen Sie zuerst die Version, indem Sie Folgendes verwenden.
ls /Applications/Postgres.app/Contents/Versions/
Es kann daran liegen, dass sich psql nicht in PATH befindet
$ locate psql
/usr/lib/postgresql/9.6/bin/psql
Dann erstellen Sie einen Link in/usr/bin
ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql
Versuchen Sie dann, psql auszuführen, damit es funktioniert.