Я хочу записать сценарий, чтобы активировать виртуальную среду и выполнить мой сервер для проекта 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'
Оба не работают. Почему? Я считал другие вопросы, но я все еще не получил его. Я - новичок, поэтому не примите опыт.
Согласно моему опыту команда должна быть:
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.
Дополнительные материалы для чтения: