为什么我的shell脚本在更改用户后退出?

时间:2014-09-29 22:25:38

标签: bash shell

我正在尝试创建这个小脚本,基本上重新创建我每次启动新的ubuntu机器并在其上安装一些python项目时所采取的步骤。脚本一度停止。这是我切换到postgres用户的时候。它从不运行psql命令

pip install --upgrade pip
sudo pip install virtualenv
useradd -m -p $2 $1
sudo -i -u postgres
psql -c "CREATE DATABASE $1;"
psql -c "CREATE USER $1 WITH PASSWORD '$2';"
psql -c "GRANT ALL PRIVILEGES ON DATABASE $1 to $1;"

我可能会抨击bash脚本,我正在努力改善。

1 个答案:

答案 0 :(得分:2)

运行命令时

sudo -i -u postgres

生成新的 shell。如果此时键入exit,则此新shell将退出,原始shell将继续运行psql命令(但不是postgres用户)。

您可以执行以下操作来解决此问题:

sudo -u postgres psql -c "CREATE DATABASE $1;"
sudo -u postgres psql -c "CREATE USER $1 WITH PASSWORD '$2';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $1 to $1;"