Использование Switch

Синтаксис командной строки

Базовый формат

switch [ОПЦИИ] <модуль> <действие> [аргументы...]

Компоненты команды

  • ОПЦИИ — глобальные флаги программы
  • модуль — имя модуля для работы (editor, java, python и т.д.)
  • действие — операция над модулем (list, show, set, help)
  • аргументы — дополнительные параметры для действия

Глобальные опции

Список опций

ОпцияКраткая формаОписание
--list-modules-lПоказать все доступные модули
--help-hПоказать справочное сообщение
--version-VПоказать версию программы
--no-colorОтключить цветной вывод

Примеры использования опций

# Показать все доступные модули
switch --list-modules
switch -l

# Показать справку
switch --help
switch -h

# Показать версию
switch --version
switch -V

# Отключить цветной вывод
switch --no-color editor list

Действия модулей

list — Показать доступные альтернативы

Выводит список всех найденных альтернатив для данного модуля.

switch <модуль> list

Пример вывода:

Available alternatives for editor:
  [1] nvim      /usr/bin/nvim      (priority: 80)
  [2] vim       /usr/bin/vim       (priority: 70)
  [3] nano      /usr/bin/nano      (priority: 60)
  [4] vi        /usr/bin/vi        (priority: 30)

show — Показать текущую конфигурацию

Отображает, какая альтернатива активна в данный момент.

switch <модуль> show

Пример вывода:

Current configuration for editor:
  Link: /usr/bin/editor
  Target: /usr/bin/vim
  Alternative: vim (priority: 70)

set — Установить альтернативу

Устанавливает указанную альтернативу как активную.

switch <модуль> set <цель>

Пример:

switch editor set nvim

Пример вывода:

Setting editor to nvim...
  Created symlink: /usr/bin/editor → /usr/bin/nvim
Successfully set editor to nvim

help — Справка по модулю

Показывает информацию о модуле: описание, управляемые ссылки, категорию.

switch <модуль> help

Пример вывода:

Module: editor
Category: system
Description: Manage default text editor

Managed links:
  /usr/bin/editor

Available actions:
  list    List available editors
  show    Show current editor
  set     Set default editor
  help    Show this help

Примеры работы с модулями

Управление текстовым редактором

# Показать доступные редакторы
switch editor list

# Показать текущий редактор
switch editor show

# Установить vim как редактор по умолчанию
switch editor set vim

# Установить nvim как редактор по умолчанию
switch editor set nvim

# Справка по модулю
switch editor help

Управление версией Java

# Показать доступные версии Java
switch java list

# Показать текущую версию
switch java show

# Установить Java 17
switch java set java-17-openjdk

# Установить Java 21
switch java set java-21-openjdk

Управление версией Python

# Показать доступные версии Python
switch python list

# Показать текущую версию
switch python show

# Установить Python 3.11
switch python set python3.11

# Установить Python 3.12
switch python set python3.12

Управление ядром системы

Внимание

Управление ядром требует прав суперпользователя (root). :::

# Показать доступные ядра
sudo switch kernel list

# Показать текущее ядро
sudo switch kernel show

# Установить ядро версии 6.8.0
sudo switch kernel set 6.8.0

# Установить ядро версии 6.9.0
sudo switch kernel set 6.9.0

Переменные окружения

NO_COLOR

Стандартная переменная для отключения цветного вывода в Unix-программах.

# Отключить цвет через переменную окружения
NO_COLOR=1 switch editor list

# Экспортировать для всех команд в сессии
export NO_COLOR=1
switch editor list

SWITCH_NO_COLOR

Специфичная для switch переменная отключения цвета.

# Отключить цвет только для switch
SWITCH_NO_COLOR=1 switch editor list

# Экспортировать
export SWITCH_NO_COLOR=1
switch editor list

Расположение файлов

Директории модулей

ТипПутьПриоритет
Системные/usr/share/switch/modules/Низкий
Пользовательские~/.local/share/switch/modules/Высокий

При совпадении имен модулей используется пользовательский модуль.

Создание директории для пользовательских модулей

mkdir -p ~/.local/share/switch/modules/

Советы по использованию

Быстрая проверка доступных модулей

# Краткий список
switch -l

# Подробная информация о каждом модуле
for module in $(switch -l | tail -n +2); do
  echo "=== $module ==="
  switch $module help
  echo
done

Проверка всех текущих конфигураций

# Показать текущие настройки всех модулей
for module in $(switch -l | tail -n +2); do
  echo "=== $module ==="
  switch $module show
  echo
done

Автоматизация установки

#!/bin/bash
# Скрипт для установки предпочитаемых альтернатив

switch editor set nvim
switch python set python3.12
switch java set java-17-openjdk

echo "Альтернативы установлены"

Обработка ошибок

Модуль не найден

Error: Module 'unknown' not found

Use 'switch --list-modules' to see available modules.

Решение: Проверьте написание имени модуля или установите необходимый модуль.

Альтернатива не найдена

Error: Alternative 'emacs' not found for module 'editor'

Available alternatives:
  nvim, vim, nano, vi

Решение: Установите программу или выберите другую доступную альтернативу.

Недостаточно прав

Error: Permission denied when creating symlink

Решение: Используйте sudo для модулей, требующих прав root (например, kernel).

Некорректный синтаксис

Error: Missing argument for 'set' action
Usage: switch editor set <target>

Решение: Укажите все необходимые аргументы команды.