🐚 Интеграция с оболочкой (Shell)
Процесс не может изменить окружение оболочки (shell), которая его запустила.
Shell-функция proxy устраняет это ограничение: она вызывает бинарник, а затем
выполняет (через eval) то, что бинарник вывел. Без этой функции proxy on
не сможет изменить вашу сессию.
Установка
Заголовок раздела «Установка»-
Добавьте скрипт в Zsh (
~/.zshrc):Окно терминала eval "$(tspm init zsh)" -
Или в Bash (
~/.bashrc):Окно терминала eval "$(tspm init bash)" -
Перезапустите терминал или выполните
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_SUBSTRPROMPT='$(tspm prompt)'Bash:
PS1='$(tspm prompt)'"$PS1"Когда прокси не задан, ничего не выводится, поэтому при выключенном прокси приглашение не меняется.
Как proxy dash обновляет сессию
Заголовок раздела «Как proxy dash обновляет сессию»На вкладке профилей 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 onproxy dashcat ~/.tspm-debug.logproxy 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). Учтите, что уже открытые оболочки
эти переменные не наследуют.
