我想编写一个执行以下操作的 shell 脚本:
如果我做天真的事情并将其放入我的脚本中:
cd <my-docs-directory>
pipenv shell
mkdocs serve
它失败了,因为pipenv shell
“在虚拟环境中启动子外壳”。我需要将mkdocs serve
命令传递到虚拟外壳(并且最好在运行脚本后进入同一个外壳)。
提前致谢!
回答
Philippe的回答有效。这就是为什么。
pipenv run bash -c 'mkdocs serve ; exec bash --norc'
- Pipenv 允许您在虚拟环境中运行命令而无需启动 shell:
$ pipenv run <insert command here>
bash -c <insert command here>
允许您将命令传递给 bash 以执行$ bash -c "echo hello" hello
exec
用于用命令替换当前的 shell 进程,以便父进程走一条路,子进程拥有 pid。这是 AskUbuntu 上的一个相关问题。