Подтвердить что ты не робот

Postgresql - bash: psql: команда не найдена

Я установил PostgreSQL, и он работает нормально. Однако, когда я пошел на восстановление резервной копии, я получил ошибку -bash: psql: command not found:

 [[email protected] ~]# su postgres
 [[email protected] root]$ psql -f all.sql
 bash: psql: command not found
 [[email protected] root]$ 

Что я сделал неправильно?

4b9b3361

Ответ 1

возможно, psql не находится в PATH пользователя postgres. Используйте команду locate, чтобы найти, где находится psql, и убедитесь, что этот путь находится в PATH для пользователя postgres.

Ответ 2

export PATH=/usr/pgsql-9.2/bin:$PATH

Исполняемый файл psql находится в каталоге /usr/pgsql-9.2/bin, и этот каталог по умолчанию не включен в путь, поэтому мы должны сообщить нашей программе оболочки (терминала), где найти psql. Когда большинство пакетов установлено, они добавляются к существующему пути, например /usr/local/bin, но не к этой программе.

Таким образом, мы должны добавить путь к переменной PATH оболочки, если мы не хотим вводить полный путь к программе каждый раз, когда мы ее выполняем.

Эта строка обычно добавляется к запуску script, который для оболочки bash будет находиться в файле ~/.bashrc.

Ответ 3

Если вы используете приложение Postgres Mac (по Heroku) и Bundler, вы можете добавить pg_config непосредственно в приложение, в ваш пакет.

bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

... затем снова запустите пакет.

Примечание. сначала проверьте версию, используя следующее.

ls /Applications/Postgres.app/Contents/Versions/

Ответ 4

Если вы используете его на Fedora или CentOS, это то, что сработало для меня (PostgreSQL 9.6):

В терминале:

$ sudo visudo -f /etc/sudoers

измените следующий текст:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

to

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin

затем:

$ printenv PATH

$ sudo su postgres

$ psql

Чтобы выйти из терминала postgreSQL, вам нужно указать цифру:

$ \q

Источник: https://serverfault.com/info/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880