Postgresql -bash:psql:找不到命令

时间:2011-07-22 12:33:28

标签: linux postgresql psql

我已经安装了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]$ 

我做错了什么?

7 个答案:

答案 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环境变量中,如以下屏幕截图所示:

add psql.exe to your Path environment variable

答案 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