Перейти к содержимому

🐚 Интеграция с оболочкой (Shell)

Процесс не может изменить окружение оболочки (shell), которая его запустила. Shell-функция proxy устраняет это ограничение: она вызывает бинарник, а затем выполняет (через eval) то, что бинарник вывел. Без этой функции proxy on не сможет изменить вашу сессию.

  1. Добавьте скрипт в Zsh (~/.zshrc):

    Окно терминала
    eval "$(tspm init zsh)"
  2. Или в Bash (~/.bashrc):

    Окно терминала
    eval "$(tspm init bash)"
  3. Перезапустите терминал или выполните source файла. Команда также устанавливает автодополнение (tab completion), так что отдельный шаг для completions не требуется.

Совместимо с instant prompt в Powerlevel10k — при запуске ничего не печатается.

Если вы не хотите выполнять команду при старте оболочки, скопируйте shell/tspm.zsh или .bash и подключите через source. Эти файлы сгенерированы из init, но форма с eval не устаревает никогда.


При вызове proxy on shell-функция запускает tspm env on. Бинарник читает активный профиль и выводит экранированные команды export; функция выполняет этот вывод в текущей сессии Zsh или Bash:

sequenceDiagram
    accTitle: Как proxy on обновляет окружение текущей оболочки
    accDescr: Пользователь выполняет proxy on через shell-функцию. Она вызывает env on в Rust-бинарнике, который читает активный профиль и возвращает экранированные команды export. Оболочка выполняет их для обновления своего окружения.
    participant User as Пользователь
    participant Shell as Zsh / Bash
    participant Binary as Rust-бинарник
    User->>Shell: proxy on
    Shell->>Binary: env on
    Binary->>Binary: Прочитать активный профиль
    Binary-->>Shell: Экранированные команды export
    Shell->>Shell: eval применяет переменные

Новые команды наследуют эти переменные. proxy off проходит тот же путь с env off и выполняет команды unset.


Функция proxy пробрасывает бинарнику всё, что не обрабатывает сама, поэтому вызовы вроде proxy <что-угодно> работают как ожидается.

КомандаОписание
proxy onВключить прокси для этой сессии
proxy offВыключить
proxy use <ключ>Сменить профиль и переприменить, если прокси включён
proxy switchИнтерактивный выбор с переприменением
proxy bestПереключиться на самый быстрый с переприменением
proxy <другое>Всё остальное передаётся бинарнику

Для proxy use, proxy switch и proxy best переприменение происходит только после успешного выбора и при непустом ALL_PROXY. Функция сначала сохраняет выбор через бинарник, затем вызывает env on и выполняет его вывод. Если ALL_PROXY пуст, выбор сохраняется для следующего proxy on. proxy profile use <ключ> только сохраняет выбор; для применения к оболочке вызовите proxy on.

Дополнительно доступны отдельные функции:

ФункцияОписание
proxy_on / proxy_offТо же, что proxy on / proxy off
proxy_toggleПереключить прокси вкл/выкл
proxy_statusСостояние сети
proxy_pingЗадержка до настроенных эндпоинтов
proxy_diagnoseДиагностика сокетов и эндпоинтов
proxy_benchmarkЗамер всех профилей
proxy_bestПереключиться на самый быстрый
proxy_switchИнтерактивный выбор
proxy_dashДашборд с применением выбранного профиля при выходе
proxy_run <cmd>Выполнить одну команду через прокси
prompt_proxy_statusИндикатор для строки приглашения (только Zsh)

Обратите внимание на подчёркивание в proxy_toggle: это отдельная функция, а не подкоманда proxy.


Показ активного прокси в приглашении. Zsh:

Окно терминала
setopt PROMPT_SUBST
RPROMPT='$(tspm prompt)'

Bash:

Окно терминала
PS1='$(tspm prompt)'"$PS1"

Когда прокси не задан, ничего не выводится, поэтому при выключенном прокси приглашение не меняется.


На вкладке профилей Enter сохраняет выбранный профиль, записывает экранированные команды экспорта в ~/.tspm-eval и закрывает дашборд. Затем shell-функция proxy или proxy_dash выполняет этот файл и удаляет его:

sequenceDiagram
    accTitle: Как дашборд применяет профиль при выходе
    accDescr: Shell-функция запускает дашборд. Enter на вкладке профилей сохраняет выбор и записывает экранированные команды export в ~/.tspm-eval. После завершения дашборда оболочка читает, выполняет и удаляет этот файл.
    participant Shell as Zsh / Bash
    participant Dash as Дашборд
    participant File as Файл экспортов
    Shell->>Dash: proxy dash
    Note over Dash: Enter на вкладке профилей
    Dash->>Dash: Сохранить выбранный профиль
    Dash->>File: Записать экранированные export
    Dash-->>Shell: Выход
    Shell->>File: Прочитать export
    File-->>Shell: Команды оболочки
    Shell->>Shell: eval применяет переменные
    Shell->>File: Удалить файл

Space сохраняет выбранный профиль и оставляет дашборд открытым; команды экспорта для оболочки при этом не записываются. Окружение применяется после выхода через Enter.

Это работает только через shell-функцию. Прямой запуск бинарника оставит файл на месте, а сессия не изменится.

Если не работает, включите логирование:

Окно терминала
proxy debug on
proxy dash
cat ~/.tspm-debug.log
proxy debug off

proxy: command not found — строка инициализации отсутствует в rc-файле или файл не перечитан. Проверьте через type proxy.

tspm binary not found in PATH — функция установлена, но бинарник недоступен в PATH. См. INSTALLATION.ru.md.

proxy on отрабатывает, но инструменты игнорируют прокси — проверьте через proxy diagnose, который печатает основные переменные прокси, установленные в сессии (все их покажет env | grep -i proxy). Учтите, что уже открытые оболочки эти переменные не наследуют.

Схема

Перетаскивайте схему. Масштаб — двумя пальцами или колесом. Клавиши: стрелки, +, −, 0.