创建Postgres的符号链接

作为一个开发者,我经常直接通过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系列版本。
编辑:我现在知道这不是真正的符号链接,但我不确定它叫什么名字,否则我早就在谷歌上找到了。基本上,我希望通过在shell中输入“psql [OPTIONS]”来运行它,就像“rvm [OPTIONS]”或“ruby [OPTIONS]”。
我知道有一个名为“postgresql-client-common”的软件包和一堆其他的Postgres软件包可以通过“apt-get”安装,但我宁愿不使用“apt-get”版本,这样我就可以随时更新Postgres。
3个回答

如果只是直接调用psql的问题,你需要确保在登录时将路径"/usr/local/pgsql/bin"包含在$PATH中。通常情况下,这涉及到在/etc/profile(或~/.profile)中适当设置PATH变量,或者如果你使用的是bash,则是/etc/bashrc或~/.bashrc。
例如:
export PATH="$PATH:/usr/local/psql/bin"
另外,psql命令期望参数如下;psql (你可以使用--flags来指定相同的)。如果你提供"psql test",它将假设当前用户的用户名(通过whoami命令查看)。
希望这能帮到你。

为什么不使用Linux别名?
alias psql=/usr/local/pgsql/bin/psql

要创建一个永久别名,只需将这行代码放入其中。
~/.bashrc or ~/.bash_profile

功能的便利性如何?
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