"error retrieving current directory" 运行 sudo 下的 psql 命令

"error retrieving current directory" running psql commands under sudo

来自 bash 脚本 我正在尝试创建一个 postgresql 数据库 + 用户。 它看起来像这样:

#!/usr/bin/env bash
echo ' Create DBs'
sudo -u postgres createdb -E 'utf-8' -l en_US.utf8 -T template0 testdb
echo ' Create User'
sudo -u postgres  psql -c "create role bert with login password 'pass';"
echo ' alter permissions'
sudo -u postgres  psql -c "alter database testdb owner to bert;"

不幸的是,我收到以下错误:

==> default: Create DBs
==> default: could not identify current directory: No such file or directory
==> default: Create User
==> default: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
==> default: CREATE ROLE
==> default: alter permissions
==> default: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

如果有人能解释一下出了什么问题以及如何解决 getcwd 错误,我将不胜感激。

谢谢!

您的脚本 运行 来自某个地方(例如 /root -- 或者可能是以前删除的临时目录),postgres 用户无权访问当前目录工作目录。

这些消息实际上是无害的(除非你正在调用依赖于 $PWD 或类似变量或命令的脚本),但如果你想避免它们,请将目录更改到某个确定存在的地方并且postgres 用户有权访问。例如,输入行:

cd /

...在脚本顶部,就在 shebang 下方。