Bash &引用;检索当前目录时出错";在sudo下运行psql命令

Bash &引用;检索当前目录时出错";在sudo下运行psql命令,bash,postgresql,sudo,Bash,Postgresql,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 '

我试图从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下。

在VM Vagrant/Homestead中运行psql时,我遇到了这个问题,在这个问题中,我在本地机器上使用了一个目录映射,然后不得不删除/替换整个目录。在候机楼,我懒得用cd。。然后cd文件夹再次出现,所以出现“以前删除过的目录”的情况。