gpt4 book ai didi

shell - 我可以在 Vagrant bootstrap shell 脚本中切换用户吗?

转载 作者:行者123 更新时间:2023-12-03 09:20:12 25 4
gpt4 key购买 nike

编辑 显然,问题是我应该做su - postgres -c "commands, commands, commands" ,
也就是说,将任何命令传递给 su , 而不是试图在下面列出它们 su ,因为这些命令(低于 su )不受 su 的影响. /编辑

编辑 2:请参阅 David Braun 的答案以获得更好的解决方案:https://stackoverflow.com/a/22947716/694469

我不能在 Vagrant 引导 shell 配置脚本中切换用户( su - postgres )吗? (为什么不?)

我正在写这样一个脚本。在那个脚本中,我这样做:

echo '===== Creating PostgreSQL databases and users'

su - postgres

psql -c "
create user SomeUserName password '...';
alter user ...;
"

在这里, psql应该尝试以用户身份登录 postgres .然而,发生的情况是 su - postgres显然失败了,shell 尝试以 root 用户身份登录。 (显然,root 是运行 Vagrant bootstrap shell 脚本的用户。)

因此出现此错误并且不会调用 psql 命令:

psql: FATAL: role "root" does not exist



更换 su - postgressudo su - postgres没有效果(我认为脚本已经以 root 身份运行。)

我加了 id (打印当前用户 ID)前后 su - postgres , 和 id版画 uid=0(root) gid=0(root) groups=0(root)之前和之后 su被称为。据我所知, su - postgres有点被忽视?和某个 exit ,稍后当我尝试切换回 root 用户时,完全退出引导脚本:-(

然而。做完后 vagrant ssh , 我可以 sudo su - postgres就好了,然后开始 psql .但不是来自配置脚本。

(一种解决方法是在我调用 -h 127.0.0.1 --username postgres 时指定 psql(而不是将用户切换到 postgres)。并且还为 VM 本地连接启用基于 PostgreSQL 信任的身份验证。)

最佳答案

echo '===== Creating PostgreSQL databases and users'

su postgres << EOF
psql -c "
create user SomeUserName password '...';
alter user ...;
"
EOF

关于shell - 我可以在 Vagrant bootstrap shell 脚本中切换用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com