Как запускать сценарий или команду каждый раз, когда терминал (zsh) открывается в рабочей области VSCode?
Я работаю над проектом Django на macOS. В моем терминале работает zsh.
Я хочу создать полезные псевдонимы, например run
вместо python manage.py runserver
, но я не хочу запускать эти команды каждый раз, когда я открываю новый терминал.
Вот что происходит:
Я не хочу создавать эти псевдонимы или запускать какие-либо команды в
.zshrc
или.zprofile
моего домашнего каталога, потому что я не хочу, чтобы они были общесистемными. Я хочу запускать их исключительно в локальных каталогах проекта.Каждый раз, когда мы открываем новый терминал на VSCode, при работе с выбранной виртуальной средой Python, первым делом запускается команда для ее активации. Она будет выглядеть следующим образом:
source /Users/.../venv/bin/activate
Это (должно) выполняться расширением Python от Microsoft. Я клонировал его репозиторий, но не смог найти где они размещают это в конфигурациях VSCode. Где же они?
- В некоторых сообщениях на StackOverflow мне посоветовали посмотреть на настройки
. Я так и сделал, и ближе всего я подошел к созданию этого профиля:
terminal.integrated.profiles.osx
"zsh (Django)": { "path": "zsh", "args": [ "-c", "source setup.sh" ] }
- это файл в моем рабочем каталоге. Его единственной командой, на данный момент, является
Я также пытался включить толькоsetup.sh
.echo "Hello World"
в args.
Всегда был один и тот же результат: терминал открывается, исходники"setup.sh"
, печатает "Hello World" и сразу после этого завершается. (Почему?!) Вот GIF того, что происходит:
venv/bin/activate
https://imgur.com/urm0zWW.
Итог: я хочу запускать команды после открытия терминала, так же как source
запускается автоматически, и я понятия не имею, как это сделать.
vscode устанавливает переменные окружения. Поэтому, если вы проверите наличие одной из этих переменных в .zshrc
или подобном, вы сможете внести изменения, не являющиеся общесистемными. Например:
if [[ $TERM_PROGRAM = vscode ]]; then
source /Users/.../venv/bin/activate
…
fi