Откройте новый терминал и исходные скрипты
Я хочу написать скрипт для активации виртуальной среды и запустить мой сервер для проекта Django в новом терминале. Мой startProject.sh это:
#!/bin/bash
source virtualenv/bin/activate
python manage.py runserver
И я могу запустить этот скрипт на моем текущем терминале:
source startProject.sh
Я хочу сделать это в новом терминале, открытом скриптом.
#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'
Я тоже это попробовал.
#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'
Оба не работают. Зачем? Я прочитал другие вопросы, но я все еще не получил это. Я новичок, поэтому, пожалуйста, не принимайте никакого опыта.
1 ответ
По моему опыту команда должна быть:
gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"
Заметки:
Путь
--working-directory='/home/<user>/project'
заключено в одинарные кавычки, если оно содержит специальные символы в качестве пробелов и т. д.Опция
-x
означает: выполнить - остаток командной строки внутри терминала.И наша команда
bash -c "<commands>"
, Это означает, что мы выполняем новыйbash
оболочка, которая должна запускаться-c "<commands>"
,У нас есть два разделенных (точкой с запятой
; == new line
)<commands>
,Первая команда
source startProject.sh
будет источником файла сценария.Вторая команда
exec bash
имеет смысл - оставаться открытым текущимgnome-terminal
окно. Есть и другие возможные подходы к этому. В текущем случае командаexec
заменит текущий образ процесса новым образом процесса - другими словами, он "убьет" текущий процесс и выполнит новый (bash
) под текущим PID.
Дальнейшее чтение:
Как запустить
gnome-terminal
из StartupApplicationsКак запустить
gnome-terminal
из StartupApps и выполните приложение от имени пользователя rootКак запустить
gnome-terminal
из КронаКак запустить
gnome-terminal
с несколькими вкладками, каждая с разным профилем, при запуске системы