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

oipij1gg  于 2022-12-11  发布在  Linux
关注(0)|答案(8)|浏览(999)

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

我做错了什么?

vngu2lb8

vngu2lb81#

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中。

2guxujil

2guxujil2#

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

jv4diomz

jv4diomz3#

这可能是由于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,它应该工作。

w8rqjzmb

w8rqjzmb4#

这个问题是针对Linux的,但我在Windows机器上的git bash也遇到了同样的问题。
我的pqsql安装在这里:C:\Program Files\PostgreSQL\10\bin\psql.exe
您可以将psql.exe的位置添加到Path环境变量as described in this other answer中,如下面的屏幕截图所示:

更改以上内容后,请关闭所有cmd和/或bash窗口,然后重新打开它们(如Ayush Shankar的注解中所述)。如果您使用的是Visual Studio Code之类的IDE,请关闭并重新打开整个IDE(如Somraj Chowdhury的注解中所述)
您可能需要使用以下命令更改默认日志记录用户。

psql -U postgres

这里postgres是用户名。如果没有-U,它将选择windows登录的用户。

blpfk2vs

blpfk2vs5#

如果您在FedoraCentOS上运行它,下面是对我有效的方法(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

oxosxuxt

oxosxuxt6#

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

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

...然后再次运行bundle。

**注意:**请先使用以下方法检查版本。

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

0h4hbjxa7#

检查是否安装了PostgreSQL。
如果没有,你可以在ubuntu中使用这个命令做同样的事情。

sudo apt update
sudo apt install postgresql postgresql-contrib
uqdfh47h

uqdfh47h8#

出现这种情况必须有两个原因:未安装软件包或PATH中未定义psql
最简单的方法是在/usr/bin或/usr/local/sbin/中创建一个链接
首先找到该文件

sudo find / -name psql

然后创建软链接

sudo ln -sf /opt/pgpro/1c-14/bin/psql /usr/local/sbin/psql

相关问题