我已经安装了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]$
我做错了什么?
我已经安装了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]$
我做错了什么?
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
。
export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH
或者export PATH=/Applications/Postgres.app/Contents/Versions/9.6/bin:$PATH
- Chauskin Rodion这个问题与Linux有关,但我在Windows机器上的Git Bash上也遇到了同样的问题。
我的postgresql安装在这里:C:\Program Files\PostgreSQL\10\bin\psql.exe
您可以像此答案中所述并在下面的屏幕截图中显示的方式将psql.exe
的位置添加到Path环境变量中。
更改以上内容后,请关闭所有cmd
和/或bash
窗口,并重新打开它们(如评论中所提到的@Ayush Shankar)。如果您正在使用Visual Studio Code之类的IDE,请关闭并重新打开整个IDE(如评论中所提到的@Somraj Chowdhury)
您可能需要使用以下命令更改默认日志用户。
psql -U postgres
这里的postgres
是用户名。如果没有使用-U
选项,则会选取当前登录的Windows用户。
psql
命令正常工作。 - Somraj Chowdhury这可能是由于未将 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,它应该可以工作。
$ 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
当您使用sudo命令时,它在不同的环境下运行。这意味着可能会出现与您当前用户不同的PATH变量设置。如果您没有将psql二进制文件的完整路径添加到root用户的PATH中,则sudo命令无法找到该文件。因此,使用sudo时需要指定psql的完整路径,例如:sudo /usr/bin/psql。检查是否安装了PostgreSQL。
如果没有安装,您可以使用以下命令在Ubuntu上执行相同操作。
sudo apt update
sudo apt install postgresql postgresql-contrib
这可能有两个原因,要么是软件包未安装,要么是在路径中未定义psql。
简单的方法是在/usr/bin或/usr/local/sbin/中创建一个链接。
首先找到该文件。
sudo find / -name psql
sudo ln -sf /opt/pgpro/1c-14/bin/psql /usr/local/sbin/psql
bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
...然后再次运行bundle。
注意:首先使用以下命令检查版本。
ls /Applications/Postgres.app/Contents/Versions/
gem install pg -v 1.3.5 -- --with-pg-config=/usr/local/Homebrew/Cellar/postgresql@12/12.13/bin/pg_config
/usr/pgsql-15
/sbin:/bin:/usr/sbin:/usr/bin
在你的~/.bash_profile用户文件中将/usr/pgsql-15
添加到PATH中,具体操作如下:
PATH=$PATH:/usr/pgsql-15/bin
export PATH
postgresql-server92
),然后不小心又安装了PostgreSQL 8.4(包名为postgresql-server
),那么在CentOS操作系统中就可能会出现这种情况。如果你卸载了PostgreSQL 8.4,yum也会将postgres二进制文件目录从路径中删除。 - Iain Samuel McLean Elder