Найти в Дзене
СНИЛС на Linux

ПЕРЕХОД С BASH НА FISH

Трудности с переходом Переход с Bash на Fish (Friendly Interactive SHell) может предложить тебе много удобных функций, но он также может привести к некоторым ограничениям и необходимости приноровиться к новой среде. Вот несколько потенциальных "подводных камней": 1. Несовместимость скриптов: Fish имеет синтаксис, который отличается от традиционного sh/bash. Это значит, что скрипты, написанные для bash, могут не работать корректно в fish без модификации. 2. Настройка среды: Команды для настройки переменных среды и алиасов в fish отличаются от bash. Тебе может потребоваться переписать соответствующие команды в твоем `~/.bashrc` для `~/.config/fish/config.fish`. 3. Интерактивные функции: Функции, как то обработка ввода (tab completion), подсказки и цвета в командной строке фундаментально отличаются в fish и могут потребоваться некоторое время для привыкания. 4. Поддержка скриптовых инструментов: Некоторые инструменты или приложения, которые предполагают использование bash-скриптов для ин
Оглавление

Bash to Fish
Bash to Fish

Трудности с переходом

Переход с Bash на Fish (Friendly Interactive SHell) может предложить тебе много удобных функций, но он также может привести к некоторым ограничениям и необходимости приноровиться к новой среде. Вот несколько потенциальных "подводных камней":

1. Несовместимость скриптов:

Fish имеет синтаксис, который отличается от традиционного sh/bash. Это значит, что скрипты, написанные для bash, могут не работать корректно в fish без модификации.

2. Настройка среды:

Команды для настройки переменных среды и алиасов в fish отличаются от bash. Тебе может потребоваться переписать соответствующие команды в твоем `~/.bashrc` для `~/.config/fish/config.fish`.

3. Интерактивные функции:

Функции, как то обработка ввода (tab completion), подсказки и цвета в командной строке фундаментально отличаются в fish и могут потребоваться некоторое время для привыкания.

4. Поддержка скриптовых инструментов:

Некоторые инструменты или приложения, которые предполагают использование bash-скриптов для инициализации или настройки, могут требовать специальных действий для работы с fish.

5. Интеграция с существующими системами:

Некоторое системное ПО и пользовательские скрипты могут быть привязаны к bash. Перед использованием fish как основного shell рекомендуется проверить, насколько хорошо он интегрируется с твоим текущим окружением.

6. Обучение и привыкание:

Fish предлагает много удобных функций, которых нет в bash, таких как автодополнение из основанного на истории ввода или интегрированная поддержка скриптовых помощников. Это может потребовать времени для обучения и адаптации.

7. Плагины и расширения:

Если ты используешь специализированные плагины или расширения для bash, то стоит заранее проверить их совместимость с fish или наличие альтернатив.

В общем, если ты готов преодолеть эти различия и потратить время на то, чтобы привыкнуть к новому интерфейсу и синтаксису, fish может быть действительно мощным и удобным инструментом для работы в командной строке.

Пример отличия в скриптах

Давай рассмотрим простую задачу: установка переменной окружения и вывод её значения на экран. Сначала посмотрим на код на bash, а затем эквивалентный код на fish.

Bash

#!/bin/bash
export GREETING="Hello, World!"
echo $GREETING

Здесь `export` используется для создания переменной окружения `GREETING`, и `echo` выводит её значение.

Fish

#!/usr/bin/fish
set -x GREETING "Hello, World!"
echo $GREETING

В Fish, `set -x` служит той же цели, что и `export` в bash — она создает переменную окружения `GREETING` и `-x` указывает, что переменная будет экспортирована в окружение последующих команд. Как видишь, синтаксис `echo` остаётся неизменным.

Обрати внимание, что если ты запускаешь эти скрипты как скрипты оболочки через файлы `.sh` или `.fish` соответственно, то не нужно указывать `export` или `set -x`, если переменные окружения используются только в рамках скрипта. Но здесь мы устанавливаем переменную как переменную окружения для демонстрации функциональности export в обеих оболочках.

Запуск скриптов bash в fish

Запуск скрипта `.sh`, написанного для Bash (или любой другой оболочки, совместимой с POSIX), в оболочке Fish возможен, но есть несколько моментов, которые нужно учитывать:

1. Интерпретатор сценариев:

Для успешного запуска скрипта `.sh` ты можешь указать правильный интерпретатор в начале скрипта (shebang). Например, если у тебя есть скрипт с первой строкой `#!/bin/bash`, то он будет запущен с использованием Bash, даже если ты находишься в сессии Fish. Просто убедись, что ты запускаешь скрипт следующим образом:

./script.sh

или

bash script.sh

или

sh script.sh

2. Права на запуск:

Перед запуском скрипта `.sh` из Fish убедись, что у файла скрипта есть права на выполнение

chmod +x script.sh

3. Совместимость синтаксиса:

Если скрипт `.sh` написан с синтаксисом который совместим только с Bash и содержит конструкции, которые не поддерживаются Fish (например, массивы Bash), запускать его нужно именно через Bash, чтобы избежать ошибок.

Fish автоматически обрабатывает такие скрипты через соответствующую оболочку, если указан правильный shebang, так что обычно проблем со сценариями, содержащими правильный shebang, не возникает.