我正在尝试在最新的 ubunutu 中安装 postgresql,并且我正在关注这些说明。当我sudo -u postgres psql postgres
收到此错误时:could not change directory to "/home/james"
我将非常感激您的帮助。
答案1
听起来您用来运行 psql 的用户 postgres 可能无法读取您正在执行语句的目录(/home/james/)
- sudo=s巫婆你服务 做- 西南
- u = “作为用户”
- postgres = 要切换到的用户
- psql = 要执行的命令
- postgres = 要连接的数据库
我在这里猜测,但我认为 sudo 将在当前目录中为 postgres 打开一个新的 shell/环境并在那里执行 psql。如果不允许 psql 读取当前目录,则可能会发生此错误。
尝试在执行命令之前切换目录:
cd /tmp
答案2
我知道这已经很老了,但是这个问题在谷歌上排名很高,我更喜欢我的答案。:)
在该 sudo 命令中插入 -i - 除非您执行 -i 命令(模拟初始登录),否则 sudo 也不会更改 $HOME 的值i
。这还会加载 postgres 用户的 .profile 等。因此,您要运行的是:
sudo -i -u postgres psql postgres
演示时间!
sauer@pyro:~$ sudo -u postgres sh -c 'echo $HOME'
/home/sauer
sauer@pyro:~$ sudo -i -u postgres sh -c 'echo $HOME'
/var/lib/postgresql
顺便说一句,单引号对于该示例很重要。:)