Мне нужно открыть несколько окон 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"
У меня очень мало опыта в сценариях оболочки, как вы можете заметить, если кто-то может мне помочь, я был бы действительно счастлив.
EDIT: добавьте пример в ответ на @dessert [ ! d5]
Отказ: я сейчас работаю в среде ROS.
Скрипт должен открыть четыре терминала (либо xterm, terminator, default terminal), либо окна; три из них должны выставить скрипт bash в той же папке, а затем roscd на другой, из этих двух из них должны выполняться различные команды (нужно запустить файл запуска, а другой - запустить скрипт). Четвертый должен быть cd в другую папку, где он должен указать .bash, а затем запустить еще один файл запуска. Было бы еще лучше, если четвертый может подождать x секунд до запуска.
Использовать функции! Преимущество этого метода заключается в том, что вы можете добавлять другие необязательные позиционные параметры для вызова функции при ее запуске.
term1(){
xterm -hold -title "term1" "$@"
}
Поместите это в свой файл ~/.bashrc и запустите source ~/.bashrc. Такая же идея для других команд.
Чтобы сохранить терминал «живым», вам нужно развернуть оболочку в конце, т. Е. Сделать
term1 -e "cd place1; command 2;bash"
. Терминал - это просто окно, и у вас нет оболочки для взаимодействия с вами, поэтому, если вы не создадите ее, вы не получите интерактивную оболочку.
Использовать функции! Преимущество этого метода заключается в том, что вы можете добавлять другие необязательные позиционные параметры для вызова функции при ее запуске.
term1(){
xterm -hold -title "term1" "$@"
}
Поместите это в свой файл ~/.bashrc и запустите source ~/.bashrc. Такая же идея для других команд.
Чтобы сохранить терминал «живым», вам нужно развернуть оболочку в конце, т. Е. Сделать
term1 -e "cd place1; command 2;bash"
. Терминал - это просто окно, и у вас нет оболочки для взаимодействия с вами, поэтому, если вы не создадите ее, вы не получите интерактивную оболочку.