2011-07-22 78 views
24

我已經安裝了PostgreSQL,它工作正常。但是,當我去恢復備份我得到了錯誤-bash: psql: command not foundPostgresql -bash:psql:找不到命令

[[email protected] ~]# su postgres 
[[email protected] root]$ psql -f all.sql 
bash: psql: command not found 
[[email protected] root]$ 

我做了什麼錯了?

+3

這可以在CentOS發生在你在安裝PostgreSQL 9.2後,無意中安裝了PostgreSQL 8.4(package'postgresql-server')(package'postgresql-serve r92')在同一臺機器上。如果擦除PostgreSQL 8.4,yum也會從路徑中刪除postgres bin目錄。 –

+0

^^這!謝謝Iain –

回答

14

也許psql不在postgres用戶的PATH中。使用locate命令可以查找psql的位置,並確保它的路徑位於postgres用戶的PATH中。

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

程序的可執行文件psql在目錄/usr/pgsql-9.2/bin,而該目錄不包括在默認的路徑,所以我們要告訴我們的外殼(終端)程序在哪裏可以找到psql。安裝大多數軟件包時,它們將被添加到現有路徑,例如/usr/local/bin,但不是此程序。

所以我們必須將程序的路徑添加到shell PATH變量中,如果我們不想在每次執行時輸入程序的完整路徑。

通常應將此行添加到shell啓動腳本,該腳本對於bash shell將位於文件~/.bashrc中。

+3

您願意發表評論嗎?它似乎很受歡迎,但它可能更有用的附加信息(例如,上述哪些行,以及他們做什麼?) – rainbowsorbet

+0

如果您在Mac上並安裝Postgres.app,然後 ''' export PATH =/Applications/Postgres.app/Contents/Versions/latest/bin:$ PATH''' 或 ''' export PATH =/Applications/Postgres.app/Contents/Versions/9.6/bin:$ PATH ''' –

1

如果您使用的是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/ 
0

如果你在運行它的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