在脚本中启动 bash 子 shell 和 运行 命令
Launch bash subshell and run commands in a script
我想编写一个 shell 脚本来执行以下操作:
如果我做一些幼稚的事情并将其放入我的脚本中:
cd <my-docs-directory>
pipenv shell
mkdocs serve
它失败了,因为 pipenv shell
"launches a subshell in the virtual environment"。我需要将 mkdocs serve
命令传递到虚拟 shell 中(并且最好在 运行 脚本之后降落在同一个 shell 中)。
提前致谢!
回答
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 上的 related question。
你可以使用这个命令:
pipenv run bash -c 'mkdocs serve ; exec bash --norc'
我想编写一个 shell 脚本来执行以下操作:
如果我做一些幼稚的事情并将其放入我的脚本中:
cd <my-docs-directory>
pipenv shell
mkdocs serve
它失败了,因为 pipenv shell
"launches a subshell in the virtual environment"。我需要将 mkdocs serve
命令传递到虚拟 shell 中(并且最好在 运行 脚本之后降落在同一个 shell 中)。
提前致谢!
回答
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 上的 related question。
你可以使用这个命令:
pipenv run bash -c 'mkdocs serve ; exec bash --norc'