Истории про XeroLinux. История восьмая: перекуём Bash на Zsh

Главный вывод, который я сделал из прошлой Истории, был таков: пост-инсталляционные кнопки общему образованию зело способствуют, но для практического конфигурирования почти ничего не дают. За двумя приятными исключениями, обеспечивающими эти исключительные приятности — кнопками Switch to ZSH… и Hero ISO Builder. О первой — эта История.

Два десятилетия назад я впервые попробовал сменить Linux на… нет, не на Windows, конечно, ло такого авантюризма я не доходил никогда (как и ни разу не бросал курить за сорок лет «курительного стажа»). А менял я Linux на FreeBSD. И очень она мне нравилась (дв и сейчас нравится — правда, теперь уже чисто платонически… или, точнее, куртуазно). Но в качестве пользовательского login shell в ней по умолчанию использовался мифический /bin/sh, казавшийся в сравнении с Linux’овым bash‘ем довольно убогим.

Правда, резонные люди (в том числе и авторы FreeBSD Handbook) говорили, что login shell легко изменить, например, на тот же bash, что показалось мне скучным. Однако в качестве альтернативы, упоминался zsh. Эта оболочка, согласно материалам официального сайта, располагала непревзойдённым функционалом, гибкостью в интерактивной работе и безграничной настраиваемостью.

Один из самых интересных моментов этой Истории — это оказалось правдой, чистой правдой и ничем иным, кроме правды. Что бы убедиться в этом, достаточно было ознакомиться с официальным руководством, известным как The Z Shell Manual, и затратить некоторое время на просмотр пользовательских конфигов, уже в то время доступных в сети.

Оказалось, проделавши это (а времени это много не заняло — я не случайно написал «ознакомиться» и «просмотреть»), выход у меня оставался один: сделать zsh своей регистрационной командной оболочкой, сиречь login shell‘ом, и оставить её в этой роли ныне, и присно, и во веки веков. Больше из командных оболочек я смотреть не мог ни на что…

За двадцать теперь уже с гаком лет у меня были немало машин, а систем на них — ещё больше. И всё это время моё первейшее дело при первом запуске новой системы (или машины) — установка и доведение до ума своей командной оболочки. Точнее, одно из первейших, поскольку таких действий при первом запуске оказывается несколько, и каждое претендует на роль наипервейшего. Кажется, впору не то что, подобно комиссару Жюву, отрастить на уровне пояса третью руку, а призвать на подмогу многорукую богиню Лакшми…

Впрочем, при некоторой практике, во-первых, вырабатывается способность не только из первейших действий выделять наипервейшие, но среди последних установить несколько действий самых наипервейших, которых на самом деле оказывается не так много. Во-вторых, выполнение действий первейших и наипервейших, не говоря уже о самых наипервейших, доводится до полного автоматизма — они выполняются буквально на рефлекторном уровне. А в-третьих, каждое действие из числа самых первоочередных естественным образом распадается на несколько стадий.

Так, для прикручивания zsh в качестве регистрационной пользовательской оболочки необходимо в первую очередь его заполучить: я видел считанные дистрибутивы, содержащие его в своих установочных iso-образах. Но в официальных репозиториях любого уважающего себя дистрибутива zsh непременно — так что установить его штатными средствами всегда труда не составляло.

Вторая стадия — помещение конфигов zsh‘а в свой домашний каталог. В сущности, ему необходим один-единственный конфиг, именуемый .zshrc и размещаемый в $HOME. У меня он самодельный и создавался на протяжении почти двадцати лет: сначала — по мере изучения опций zsh‘а, потом — при появлении нового функционала, который представлялся мне полезным.

Есть у меня конфиг для zsh‘а и на более частный случай — $HOME/.zshenv, используемый, насколько я знаю, только в deb-based системах. Его единственная задача — обеспечить в zsh‘е поддержку функции history-substring-search, то есть поиска в истории команд по начальной последовательности их символов. Во всех остальных дистрах это работает и без .zshenv, но во всех Dabian’оидах и Ubuntu’оидах без него не обойтись. И баге этой столько лет, что никто уже не помнит, когда она успела превратиться в непременную фичу…

Вот теперь настаёт смена пользовательского шелла командной

$ chsh -s /bin/zsh

которая вступит в силу после ввода пользовательского пароля. Почему сейчас? Потому что при иначе при первом сеансе zsh‘а будут заданы вопросы, каким следует создавать .zshrc — минимальным, неким умолчальным, интерактивно сконфигурированным или уже не помню каким. В мне ведь никакого не надо — кроме созданного непосильным трудом и в борьбе доказавшем право своё работать на моих машинах.

Каковое, впрочем, можно тут же проверить, дав команду:

$ source $HOME/.zshrc

При этом конфиг будет считан и применён к исполнению, как при новом входе в шелл. Исли в конфиг (вдруг, неожиданно) вкрались ошибки — они будут отмечены. Однако ведь этого не может быть, потому что этого не может быть никогда?

Однако такое случилось при установке XeroLinux. Я пропустил кнопку Switch to ZSH (а то без неё раньше не обходился?), но добросовестно проделал всю описанную выше процедуру. И на стадии считывания конфига .zshrc получил пару экранов ошибок: впечатление было такое, что некто закадровый упорно пытался интерпретировать конфиг zsh‘а, используя встроенные команды bash‘а.

Потом я перепробовал разные способы решения проблемы, включая и волшебную кнопку Switch to ZSH, и в принципе добился чего-то типа работоспособности. Но результата, меня удовлетворяющего, там и не получил. В итоге пришёл в выводу, что девчонка вы… пендрёжа такого не стоит, интерес к теме XeroLinux’а потерял и по другим причинам, и для себя закрыл эту тему. Наверное, навсегда.

Автор: alv

Про себя напишу потом

Добавить комментарий