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