关于linux:Postgresql -bash:psql:找不到命令

Postgresql -bash: psql: command not found

我已经安装了PostgreSQL,它可以正常工作。 但是,当我还原备份时,出现错误-bash: psql: command not found

1
2
3
4
 [root@server1 ~]# su postgres
 [postgres@server1 root]$ psql -f ALL.sql
 bash: psql: command NOT found
 [postgres@server1 root]$

我做错了什么?


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

程序可执行文件psql位于目录/usr/pgsql-9.2/bin中,并且默认情况下该目录不包含在路径中,因此我们必须告诉shell(终端)程序在哪里找到psql。安装大多数软件包后,它们将被添加到现有路径(例如/usr/local/bin)中,但不会添加到该程序中。

因此,如果我们不想每次执行程序时都必须键入程序的完整路径,则必须将程序的路径添加到shell PATH变量中。

通常应将此行添加到shell启动脚本中,对于bash shell,它将位于文件~/.bashrc中。


也许psql不在postgres用户的PATH中。使用locate命令查找psql的位置,并确保其路径在postgres用户的PATH中。


可能是由于psql不在PATH中

1
2
$ locate psql
/usr/lib/postgresql/9.6/bin/psql

然后在/ usr / bin中创建一个链接

1
ln -s /usr/lib/postgresql/9.6/bin/psql /usr/bin/psql

然后尝试执行psql它应该可以工作。


如果您在Fedora或CentOS上运行它,那么这对我有用(PostgreSQL 9.6):

在终端:

1
$ sudo visudo -f /etc/sudoers

修改以下内容:

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

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

退出,然后:

1
2
3
4
5
$ printenv PATH

$ sudo su postgres

$ psql

要退出postgreSQL终端,您需要输入数字:

1
$ \q

来源:https://serverfault.com/questions/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880


问题是针对linux的,但我在Windows机器上的git bash也遇到了同样的问题。

我的pqsql安装在这里:
C:\Program Files\PostgreSQL\10\bin\psql.exe

您可以将psql.exe的位置添加到Path环境变量中,如以下屏幕快照所示:

add psql.exe to your Path environment variable


如果您使用的是Postgres Mac应用程序(由Heroku开发)和Bundler,则可以直接在应用程序内部将pg_config添加到包中。

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

...然后再次运行捆绑软件。

注意:首先使用以下命令检查版本。

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