执行 bash 函数来运行屏幕

Yoh*_* L. 6 bash gnu-screen

我正在使用 aws ubuntu 实例。我想创建一个别名/函数来运行一些快捷方式,例如在屏幕中激活 python 虚拟环境。

我已经做了这个功能,例如:

# Alias for jupyter notebook
function start_jupyter() {
    cd my_path/lab_workspace/  # 1. cd into my workspace
    source labworkspaceenv/bin/activate  # 2. activate my python virtualenv
    screen -S jupyter_lab  # 3. start screen
    echo 'You are in screen for jupyter lab'  # 4. print something
    jupyter lab  # 5. start jupyter lab
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我用 运行函数时start_jupyter,这似乎在 3. 之后停止。屏幕被创建,但没有打印任何内容并且 jupyterlab 没有启动。

我究竟做错了什么?

ann*_*hri 7

该函数停止的原因是您生成了一个交互式屏幕会话。你可能想要这样做:

screen -dmS jupyter_lab jupyter lab
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为的分离屏幕会话jupyter_lab并在那里执行命令。

根据screen --help信息:

-dmS name     Start as daemon: Screen session in detached mode.
Run Code Online (Sandbox Code Playgroud)

所以,你的功能是:

-dmS name     Start as daemon: Screen session in detached mode.
Run Code Online (Sandbox Code Playgroud)