Ответ 1
возможно, psql не находится в PATH
пользователя postgres. Используйте команду locate, чтобы найти, где находится psql, и убедитесь, что этот путь находится в PATH
для пользователя postgres.
Я установил 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]$
Что я сделал неправильно?
возможно, psql не находится в PATH
пользователя postgres. Используйте команду locate, чтобы найти, где находится psql, и убедитесь, что этот путь находится в PATH
для пользователя postgres.
export PATH=/usr/pgsql-9.2/bin:$PATH
Исполняемый файл psql
находится в каталоге /usr/pgsql-9.2/bin
, и этот каталог по умолчанию не включен в путь, поэтому мы должны сообщить нашей программе оболочки (терминала), где найти psql
. Когда большинство пакетов установлено, они добавляются к существующему пути, например /usr/local/bin
, но не к этой программе.
Таким образом, мы должны добавить путь к переменной PATH оболочки, если мы не хотим вводить полный путь к программе каждый раз, когда мы ее выполняем.
Эта строка обычно добавляется к запуску script, который для оболочки bash будет находиться в файле ~/.bashrc
.
Если вы используете приложение 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/
Если вы используете его на 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