Я должен открыть несколько xterm окон и сохранить их позже для выполнения различных команд в каждом из них при поддержании их.
Пример (не корректный вообще) был бы:
term1= xterm -hold -title "term1"
term2= xterm -hold -title "term2"
term3= xterm -hold -title "term3"
Вычислите те же команды для всех них:
for i in term1 term2 term3
do
$i -e "cd somewhere; source something"
done
затем выполните различные команды для некоторых из них:
$term1 -e "cd somewhere else; ./..."
$term2 -e "do other thing"
У меня есть очень мало опыта в сценариях оболочки, как можно заметить, если бы кто-то мог бы помочь мне, я был бы действительно счастлив.
Править: добавьте пример в ответ на @dessert
Отказ от ответственности: Я в настоящее время работаю в окружающей среде ROS.
Сценарий должен открыть четыре терминала (любой xterm, разделитель, терминал по умолчанию) окна; три из них должны получить сценарий удара в той же папке и затем roscd к другому этого, два из них должны выполнить различные команды (нужно запустить launch_file, в то время как tho другой должен запустить скрипт). Четвертый должен CD к другой папке, где он должен получить .bash и затем запустить другой launch_file. Было бы еще лучше, если четвертый может ожидать x секунды перед запуском.
Используйте функции! Преимущество этого метода состоит в том, что можно добавить другие дополнительные позиционные параметры к вызову функции при выполнении его.
term1(){
xterm -hold -title "term1" "$@"
}
Поместите это в Ваш ~/.bashrc
файл и выполненный source ~/.bashrc
. Та же идея для других команд.
Для поддержания терминала необходимо породить оболочку в конце, т.е. сделать
term1 -e "cd place1; command 2;bash"
Сам терминал является просто окном, и он не имеет оболочки одной для Вас для взаимодействия с, поэтому если Вы не породите один - Вы не получите интерактивную оболочку.