Как запускать сценарий или команду каждый раз, когда терминал (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/activatehttps://imgur.com/urm0zWW.

  • Итог: я хочу запускать команды после открытия терминала, так же как source запускается автоматически, и я понятия не имею, как это сделать.

    vscode устанавливает переменные окружения. Поэтому, если вы проверите наличие одной из этих переменных в .zshrc или подобном, вы сможете внести изменения, не являющиеся общесистемными. Например:

        if [[ $TERM_PROGRAM = vscode ]]; then
          source /Users/.../venv/bin/activate
          …
        fi
    
    Вернуться на верх