找不到Postgresql -bash: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]$ 

我做错了什么?

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

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

如果您正在使用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/ 

如果你在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