在 Bash 脚本中同时执行一些操作吗?

在 Bash 脚本中同时执行一些操作吗?

我正在尝试运行这个 bash 脚本:

source ~/miniconda3/etc/profile.d/conda.sh
gnome-terminal --tab -e "conda activate env_num_1 && jupyter lab"
conda activate env_num_2
cd some_path 
gnome-terminal --tab -e "sleep 5 && firefox myurl" #
bash "command that starts web server" #It takes a few moment to boot up hence the sleep function

无论出于什么原因,gnome-terminal 都会打开选项卡,但不会执行所给出的命令。我该怎么做才能解决这个问题?

编辑:在终端中尝试了下面的建议(gnome-terminal --tab -- sleep 5 && firefox myurl),我得到了

无法执行子进程“conda activate machine-learning-env & jupyter lab”:无法执行:没有此文件或目录

编辑2:继续摆弄它,这大致给出了我想要的结果。

#!/bin/bash
source ~/miniconda3/etc/profile.d/conda.sh

conda activate env1 && jupyter lab &
(conda activate env2
cd mydir
bash webui.sh & (sleep 10 && firefox myurl))

但似乎所有操作都在一个终端中完成。我想关闭一个程序,并保留另一个程序。但我想一定还有其他方法?

答案1

我了解,你想做这样的事情:

gnome-terminal --tab -- sh -c "conda activate env_num_1 && jupyter lab"

@see选项man gnome-terminal中的警告--command, -e=COMMAND

添加read调试命令:

gnome-terminal --tab -- sh -c "conda activate env_num_1 && jupyter lab; read -p \"press enter key\""

相关内容