psql:找不到命令Mac


77

我通过http://www.postgresql.org/download/macosx/上的图形安装安装了PostgreSQL

我在应用程序中看到了它,在应用程序中也有psql终端。我需要psql在常规终端中为另一个正在为应用程序运行的bash脚本工作。

由于某种原因,当我跑步时

psql

在Mac终端中,我的输出是

-bash: psql: command not found

我在终端中运行以下命令:

locate psql | grep /bin

和输出是

/Library/PostgreSQL/9.5/bin/psql

然后,我编辑〜/ .bash_profile并将其添加到路径中,如下所示:

export PATH = /Library/PostgreSQL/9.5/bin/psql:$PATH

〜/ .bash_profile中唯一的另一件事是SDK man,它位于脚本的底部,正如它应该说的那样。我尝试将浴池设置为/Library/PostgreSQL/9.5/bin/。我也重新启动了终端。

如何使psql工作?

编辑 添加到.bashrc后,当我打开终端时返回此输出

-bash: export: `/Library/PostgreSQL/9.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin': not a valid identifier

5
您的PATH略有错误。您需要PATH到“包含目录”,而不是实际的可执行文件。您的PATH应该export PATH=/Library/PostgreSQL/9.5/bin:$PATH-没有多余的部分psql。而且,您必须删除等号周围的空格。
马克·谢切尔

@MarkSetchell我也尝试过,它仍然返回psql:找不到命令
user3147424,2016年

你能给我输出echo $PATH吗?
朱利安·洛佩兹

/Users/name/.sdkman/candidates/grails/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
user3147424

我刚刚添加了一个编辑-路径问题。
user3147424 '16

Answers:


108

您的PATH略有错误。您需要PATH到“包含目录”,而不是实际的可执行文件本身。

您的PATH应该这样设置:

export PATH=/Library/PostgreSQL/9.5/bin:$PATH

没有多余的sql部分。另外,必须删除等号周围的空格。

关键字:Postgresql,PATH,macOS,OSX,psql


9
只需重新启动您的终端,就可能是全部了
Russiansummer '18

8
永远不要,永远不要忘记:$PATH命令末尾的,否则它将击中风扇并使外壳瘫痪:p
benjaminz

1
@Luffydude问题是免费的。随时提出新要求,我们将尽力提供帮助。
Mark Setchell

实际上没有意识到我需要安装某些东西,现在它可以工作了,谢谢:)
Luffydude

1
对于Mojave用户:export PATH=/usr/local/opt/postgresql@9.5/bin:$ PATH
Davide Carpini

26

从Postgres文档页面:

sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

重新启动您的终端,您将在路径中找到它。


2
说明还说:“当然,您也可以只编辑.profile文件。” 直到我在MacOS 10.12 Sierra上使用Postgres 10进行安装之前,我的cli安装才起作用(sudo命令对我而言不起作用):vi ~/.profile add this line: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/10/bin .source ~/.profile
kevin11

17

对我来说,这工作:

  1. 下载应用程序:https : //postgresapp.com/downloads.html

  2. 运行配置$ PATH的命令-请注意,它对我不起作用。 https://postgresapp.com/documentation/cli-tools.html

  3. 手动将其添加到.bash_profile文档中:

    cd  # to get to your home folder
    open .bash_profile  # to open your bash_profile
    

    在您的bash个人资料中添加:

    # Postgres
    export PATH=/Applications/Postgres.app/Contents/Versions/latest/bin
    

    保存文件。重新启动终端。输入“ psql”。做完了



5

修改您的PATHin .bashrc,而不是in .bash_profile

http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files


我还添加了.bashrc-仍然返回相同的输出。
user3147424 '16

标记为有用的信息,尽管它不能解决我的特定问题。谢谢您的帮助。
user3147424 '16

是的,PATH在Mark指出之前,我没有发现您行中的多余空格。:-) 很高兴我能帮助你。
朱利安·洛佩兹

4

打开.bash_profile您的主文件夹中的文件。这是一个隐藏文件。

下面添加到年底出口PATH行这条道路在你.bash_profile的文件 :/Applications/Postgres.app/Contents/Versions/latest/bin

符号:分隔路径。

例:

如果文件包含: export PATH=/usr/bin:/bin:/usr/sbin:/sbin

它将变成: export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/latest/bin

如何显示隐藏文件

在终端中,粘贴以下内容: defaults write com.apple.finder AppleShowAllFiles YES


4

Mojave,Postgres通过以下方式安装

brew install https://raw.githubusercontent.com/lembacon/homebrew-core/bede8a46dea462769466f606f86f82511949066f/Formula/postgresql@9.6.rb

如何在您的路径中获取psql:

brew link postgresql@9.6 --force



1

作为一名postgreSQL新手,我发现postgresql站点上的os x设置说明不可穿透。我遇到各种错误。幸运的是,卸载程序运行良好。

cd /Library/PostgreSQL/11; open uninstall-postgresql.app/

然后,我首先进行了brew安装,随后是本文。如何在MacOS上设置PostgreSQL

现在工作正常。


1

如果Postgresql是从官方网站下载的。安装后,运行这些命令可帮助我解决psql问题。

转到您的主目录 cd ~

在主目录中,运行ls -a。使用vim编辑.bash_profile文件

vi .bash_profile 打开vim编辑器。

通过按i编辑器插入。

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<Version Number>/bin

Version Number指安装在本地计算机上的PostgreSQL的版本号。就我而言,安装了版本12,因此我输入

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/12/bin

按下esc键,然后按:wq退出编辑器。

输入 source .bash_profile在您的终端中以读取和执行刚刚作为当前Shell脚本中的参数传递的文件的内容。

psql

最终结果

综上所述:

  • cd ~
  • vi .bash_profile
  • export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/12/bin 记下版本号
  • exit vim
  • source .bash_profile
  • psql 作品😁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.