我已经安装了PostgreSQL,它运行正常。但是,当我去恢复备份时,我收到错误-bash: psql: command not found
:
[root@server1 ~]# su postgres
[postgres@server1 root]$ psql -f all.sql
bash: psql: command not found
[postgres@server1 root]$
我做错了什么?
答案 0 :(得分:39)
export PATH=/usr/pgsql-9.2/bin:$PATH
程序可执行文件psql
位于目录/usr/pgsql-9.2/bin
中,默认情况下该目录不包含在路径中,因此我们必须告诉shell(终端)程序在哪里找{{1} }}。安装大多数软件包时,会将它们添加到现有路径,例如psql
,但不会添加到此程序。
因此,如果我们不希望每次执行时都必须输入程序的完整路径,那么我们必须将程序的路径添加到shell PATH变量中。
此行通常应添加到shell启动脚本中,bash shell将位于文件/usr/local/bin
中。
答案 1 :(得分:18)
也许psql不在postgres用户的PATH
中。使用locate命令查找psql的位置,并确保其路径位于postgres用户的PATH
。
答案 2 :(得分:2)
如果您在 Fedora 或 CentOS 上运行它,这对我有用(PostgreSQL 9.6):
在终端:
$ sudo visudo -f /etc/sudoers
修改以下文字:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
到
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/questions/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880
答案 3 :(得分:1)
如果您使用的是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 :(得分:0)
问题是针对Linux的,但我在Windows计算机上的git bash也遇到了同样的问题。
我的pqsql安装在这里:
C:\Program Files\PostgreSQL\10\bin\psql.exe
您可以将psql.exe
的位置添加到Path环境变量中,如以下屏幕截图所示:
答案 5 :(得分:0)
可能是由于psql不在PATH中
$ locate psql
/usr/lib/postgresql/9.6/bin/psql
然后在/ usr / bin
中创建一个链接ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql
然后尝试执行psql应该可以工作。
答案 6 :(得分:0)
检查是否安装了 PostgreSQL。
如果没有,您可以使用此命令在 ubuntu 中执行相同操作。
sudo apt update
sudo apt install postgresql postgresql-contrib