我已經安裝了PostgreSQL,它工作正常。但是,當我去恢復備份我得到了錯誤-bash: psql: command not found
:Postgresql -bash:psql:找不到命令
[[email protected] ~]# su postgres
[[email protected] root]$ psql -f all.sql
bash: psql: command not found
[[email protected] root]$
我做了什麼錯了?
我已經安裝了PostgreSQL,它工作正常。但是,當我去恢復備份我得到了錯誤-bash: psql: command not found
:Postgresql -bash:psql:找不到命令
[[email protected] ~]# su postgres
[[email protected] root]$ psql -f all.sql
bash: psql: command not found
[[email protected] root]$
我做了什麼錯了?
也許psql不在postgres用戶的PATH
中。使用locate命令可以查找psql的位置,並確保它的路徑位於postgres用戶的PATH
中。
export PATH=/usr/pgsql-9.2/bin:$PATH
程序的可執行文件psql
在目錄/usr/pgsql-9.2/bin
,而該目錄不包括在默認的路徑,所以我們要告訴我們的外殼(終端)程序在哪裏可以找到psql
。安裝大多數軟件包時,它們將被添加到現有路徑,例如/usr/local/bin
,但不是此程序。
所以我們必須將程序的路徑添加到shell PATH變量中,如果我們不想在每次執行時輸入程序的完整路徑。
通常應將此行添加到shell啓動腳本,該腳本對於bash shell將位於文件~/.bashrc
中。
您願意發表評論嗎?它似乎很受歡迎,但它可能更有用的附加信息(例如,上述哪些行,以及他們做什麼?) – rainbowsorbet
如果您在Mac上並安裝Postgres.app,然後 ''' export PATH =/Applications/Postgres.app/Contents/Versions/latest/bin:$ PATH''' 或 ''' export PATH =/Applications/Postgres.app/Contents/Versions/9.6/bin:$ PATH ''' –
如果您使用的是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
這可以在CentOS發生在你在安裝PostgreSQL 9.2後,無意中安裝了PostgreSQL 8.4(package'postgresql-server')(package'postgresql-serve r92')在同一臺機器上。如果擦除PostgreSQL 8.4,yum也會從路徑中刪除postgres bin目錄。 –
^^這!謝謝Iain –