Как установить и настроить оболочку ridiculous fish в Debian Squeeze

    Совсем недавно я открыл для себя оболочку Ridiculous fish, которая принципиально отличается от bash и zsh с которыми я работал ранее. На моем MacBook Pro под Mac OS X оболочка установилась без каких либо проблем и замечательно работала. Освоившись в новой оболочке, я решил что пришло время установить и настроить ее так же и на серверах, на которых установлен 64-разрядный Debian Squeeze. Тут то я и столкнулся с тем, что 32-разрядный deb пакет, который лежит у них на сайте, на 64-разрядный Debian не устанавливается. И я решил собрать любимую оболочку из исходников. Этот процес и будет описан в статье.

    Скачиваем исходники с сайта и распаковываем их.
    wget http://ridiculousfish.com/shell/files/fishfish.tar.gz
    tar xzf fishfish.tar.gz
    

    Некоторую сложность вызвал поиск необходимых зависимостей, мне не удалось быстро найти место, где бы они были описаны. Возможно, зависимости и не правильные, но у меня с такими зависимостями все собирается.
    sudo apt-get install autoconf g++ libncurses5-dev libncursesw5-dev gettext
    

    После того, как зависимости установлены приступаем с сборке самой оболочки.
    autoconf
    ./configure --without-xsel
    

    При конфигурации я указываю опцию --without-xsel. Если ее не указывать, то при сборке скрипт не найдет некоторых библиотек от X11. Устанавливать же X11 на севрер у меня желания не было. Если все прошло хорошо — вы увидите:
    fish is now configured.
    Use 'make' and 'make install' to build and install fish.
    

    Запускаем сборку.
    make
    

    Если сборка завершилась успешно, то вы увидите:
    fish has now been built.
    Use 'make install' to install fish.
    

    После сборки устанавливаем fish.
    sudo make install
    

    Если все хорошо — вы увидете:
    fish is now installed on your system.
    To run fish, type 'fish' in your terminal.
    
    To use fish as your login shell:
    * add the line '/usr/local/bin/fish' to the file '/etc/shells'.
    * use the command 'chsh -s /usr/local/bin/fish'.
    
    To set your colors, run 'fish_config'
    To scan your man pages for completions, run 'fish_update_completions'
    
    Have fun!
    

    Добавляем строку /usr/local/bin/fish в /etc/shells, как рекомендует инсталятор.
    sudoedit /etc/shells 
    

    Выбираем fish в качестве оболочки.
    chsh -s /usr/local/bin/fish
    

    После завершения установки у меня остались некоторые проблемы: раздражающее мигание команд и подсказок и неработающая генерация completions из-за manpath. Проблему с миганиями я решил убрав «лишние» настройки в цветах, в которые раскрашивает оболочка команды. Вы можете выбрать такую раскарсску, какая вам нравится с помощью set fish_color_* параметров.
    set fish_color_autosuggestion yellow
    set fish_color_command green
    set fish_color_param cyan
    

    Проблему с неработающей генерацией completions тоже удалось решить с помощью страшного трюка. Редактируем файлик:
    sudoedit /usr/local/share/fish/tools/create_manpage_completions.py
    

    Переходим на строку с номером 744 и как описано здесь редактируем эту строчку так, что бы вместо
    proc = subprocess.Popen(['man', '--path'], stdout=subprocess.PIPE)
    

    получилось
    proc = subprocess.Popen(['manpath'], stdout=subprocess.PIPE)
    

    Потом запускаем генерацию completions
    fish_update_completions 
    

    Если все правильно получаем в ответ, что-то вроде
    Parsing man pages and writing completions to /home/rp/.config/fish/completions/
    


    Вуаля! Наслаждаемся прекрасной оболочкой.

    Share post

    Similar posts

    Comments 24

      +8
      А можете в 2х словах рассказать, чем она принципиально отличается от bash?
        0
        Интерактивностью поиска относительно истории и комплишинов. Рассказать достаточно сложно, нужно показывать. Поиск по истории и некоторым комплишинам происходит во время ввода команды. Чем-то похоже на строку для ввода поискового запроса в гугле, когда сразу выполняется и поиск. Возможно, баш тоже можно для такого настроить.
          0
          Поставил попробовать, выглядит красиво, только что-то не могу настройки найти, тот же prompt даже не могу изменить =\
          В zsh нравится куча плагинов для всего, а здесь элементарных вещей сделать не могу :-(
            0
            ridiculousfish.com/shell/user_doc/html/ — есть общирная документация.

            Я долго осваивался, но когда понимаешь логику — все что надо ищется по комплитам и вроде не надо конфиги редактировать. Вводишь set fish — и ищешь в комплитах нужный параметр. Я из всего только цвета менял и приветствие убирал. ( set fish_greeting )
            0
            Zsh имеет вполне достаточный список auto completions. Что касается поиска, то если я сочту это нужным то нажму Ctrl+R и получу тоже самое с возможность двигаться по списку подходящих команд.
              0
              Никто вас не заставляет использовать фиш, zsh тоже замечательная оболочка. Но лично мне больше нравится когда оболочка угадывает, что ты ее хотел попросить сделать.
              +1
              имхо это не принципиальные отличия :) а мелкие fish'ки
                0
                Какие отличия вы считаете принципиальными?
                  0
                  ну например:
                  • управление голосом, жестами
                  • встроенная поддержка js/python/ruby/etc
                  • встроенная поддержка html/картинок/аудио/etc
                  • и тд и тп и др

                  имхо
            0
            Какая-то она… непривычная. Ну это дело вкуса.
            Кстати, почему маны не поставились?:) Или они уже не в моде?
              0
              Да. Точно. В дебиане не поставились, наверное, еще одна проблема. Под Mac OS X у меня ман для фиш нормально работает.
              +3
              sudo make install? На сервере? Вы это серьёзно?
              Хоть checkinstall пакет соберите.
                +1
                Тоже хотел написать, что это ж как надо полюбить тулзу, что бы на серверах так собирать)
                  0
                  Спасибо за наводку на checkinstall. В следующий раз как буду что-нибудь из исходников собирать — испытаю.
                  0
                  Вы еще добавьте статью с описанием и настройкой разных фич и плюх =)
                    –1
                    Кроме того, что описано в статье, я использую только set fish_greeting, что б убрать дефолтное приветствие остальные умолчания меня устраивают.
                      +2
                      Так вы для себя статью писали или для людей?
                        0
                        Я описал то, что делал для себя, что б другим было проще проделать то же самое, если понадобится. Лично, я перед тем, как начать все это делать, искал в инете подобную статью. Ни у нас ни в буржунете ничего подобного не было. Поэтому я и написал статью, что б и мне и другим в следующий раз было проще проделать тоже самое.
                    +2
                    Статья о том, как собрать программу из исходников? Да ещё и с sudo make install в конце. Вы шутите?
                      0
                      Тем не менее минимум 11 человек посчитали, что работа проднелана не зря. И если вам статья не была полезна, это не означает, что она не была полезна для кого-либо еще.
                      0
                      Скажите, а с midnight commander оно у вас работает?
                        0
                        Сам миднайт из фиш запускается. А так миднайтом не пользуюсь.
                          0
                          У меня в mc встроенная оболочка не работает. Пишет «Внимание: невозможно перейти в /home/braintorch.»
                            0
                            у меня в mc переходит и в Mac OS X и на Debian

                      Only users with full accounts can post comments. Log in, please.