Я работаю над ОС Ubuntu, я хочу создать единственный файл bash , который правильно запускает этот код, как показано на скриншоты.
Обратите внимание:
Я хочу запустить два терминала в одном окне терминала, и второй набор кодов во втором терминале должен быть запущен через 5 секунд после первого набора кодов в первом терминале.
Мне нужен первый набор кодов для продолжения работы (не останавливаться при запуске второго терминала). *
Код:
cd catkin_ws
roscore
sleep 5
source devel/setup.bash
roslaunch hector _slam_launch tutorial.launch
Снимки экрана:
Командой gnome Terminal --tab
можно создать вкладку терминала. Поместите команды в файл и перейдите к bash
в качестве параметра --initfile
:
cd catkin_ws
tmpfile=$(mktemp /tmp/roslaunch-script.XXXXXX)
cat >$tmpfile <<EOF
sleep 5
source "$HOME"/.bashrc
source devel/setup.bash
roslaunch hector _slam_launch tutorial.launch
EOF
gnome-terminal --tab -- bash --init-file $tmpfile
roscore
rm $tmpfile
Раньше это работало, а пока еще будет работать со следующим кодом:
gnome-terminal --tab -e "sh -c 'cd catkin_ws ; roscore'" \
--tab -e "sh -c 'sleep 5; source devel/setup.bash ; roslaunch hector _slam_launch tutorial.launch'"
Issue заключается в том, что разработчики Gnome рассматривают возможность отказаться от опции -e
("выполнить") в пользу прекращения действия опции с помощью --
, после чего будет подана команда. Однако, они забыли, что это изменение делает возможным подачу только одной команды. Больше нет возможности автоматически открывать Gnome Terminal с несколькими вкладками, содержащими различные процессы, например, каждая из которых содержит свой сеанс ssh.