作为一名开发人员,我经常直接 ssh 进入我的本地数据库,只是为了在推送我的代码之前测试我的应用程序。
然而,我发现每次我想访问 Postgres 时,我都必须输入
postgres@ubuntu:~$ /usr/local/pgsql/bin/psql test
而在我的工作机器上,我所要做的就是输入
postgres@ubuntu:~$ psql --dbname=test --username=user
我尝试创建一个符号链接,并且成功了,但是每当我尝试通过此快捷方式连接它时,都会收到以下错误消息:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我该如何让它工作?为了避免产生任何差异,我使用的是 9.1.x 系列的自编译版本。
编辑:我现在知道这实际上不是符号链接,但我不确定它叫什么,否则我肯定已经在 Google 上找到了。基本上,我希望它通过输入psql [OPTIONS]
类似rvm [OPTIONS]
或 来从 shell 运行ruby [OPTIONS]
。
我知道有一个名为postgresql-client-common
& 的包,还有一堆其他的 Postgres 包apt-get
,但我不想使用该apt-get
版本,这样我就可以动态更新 Postgres。
答案1
如果只是直接调用 psql,则需要确保登录时路径“/usr/local/pgsql/bin”包含在 $PATH 中。通常这与在 /etc/profile(或 ~/.profile)中适当设置 PATH 变量有关,或者如果您使用 bash,那么这将是 /etc/bashrc 或 ~/.bashrc。
例如
导出 PATH="$PATH:/usr/local/psql/bin"
此外,psql 命令需要以下参数;psql <dbname> <username>(您可以使用 --flags 来指定相同的参数)。
如果您提供“psql test”,那么它将假定当前用户的用户名(如whoami命令所示)。
希望这可以帮助。
答案2
为什么不使用 Linux 别名?
alias psql=/usr/local/pgsql/bin/psql
要创建永久别名,只需将此行放入
~/.bashrc or ~/.bash_profile
答案3
功能的便捷性怎么样?
postgres@ubuntu:~$ function psqltest {
> /usr/local/pgsql/bin/psql test
> }
postgres@ubuntu:~$
一旦定义,每当您输入以下内容时,它将在您的 bash shell 中运行 /usr/local/pgsql/bin/psql test
postgres@ubuntu:~$ psqltest
最后一条提示:将您想要保留并再次使用的功能存储在 $HOME/.bashrc 文件中。
如果你对编写 bash 函数感兴趣,我找到了一个教程https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php