Откройте новый терминал и исходные скрипты
Я хочу написать скрипт для активации виртуальной среды и запустить мой сервер для проекта 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с несколькими вкладками, каждая с разным профилем, при запуске системы