Search
Write a publication
Pull to refresh

Comments 44

У баша тоже есть отличные плагины, половина фич такая же, половина я не понимаю зачем нужны, в чем прикол... 🤔

Zsh на маке по дефолту. Можно на bash перебраться, но где вылезет - никто не знает.

Да всё нормально переключается и нигде не вылезает. До Catalina у macOS тоже bash был дефолтным. Тем более, шелл переключается у конкретного пользователя, так что всю систему в целом это не аффектит, да и на маке намного меньше системных шелл-скриптов используется.

Нигде не вылезет. Просто смысла ноль.

Это с каких пор он там по-дефолту? Вы либо ставили его настолько давно, что забыли про zsh либо кто-то помимо вас шурудил в вашей системе.

С тех пор как вышла Catalina, то есть с 2019 года.

А какие именно сомнения вызвали? Алиасы мб?

Я на баше обычно пользуюсь Ctrl+R, когда надо из истории достать, в остальных случаях -- обычный автокомплит по табу покрывает 99% протребностей.

Разные вариации https://github.com/akinomyoga/ble.sh и https://github.com/dvorka/hstr тоже пробовал, но так и не получил никакого буста с них.

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

Наборы альясов вообще улыбнули...

Тогда б он не был скрытым)
Вообще меня пару раз за последнее время спросили, стоит ли переходить. Я задумался, и решил выписать фичи, которые помогают как-то

Понимаете в чем дело, статья выглядит я поставлю zsh и два плагина и это круто, переходите в мой телеграм канал

Но простой запрос в Гугле bash Vs zsh, даёт ссылку на Хабре за 2012

Но в 2025 хотелось бы что вроде этого реально сравнение
https://blog.logrocket.com/bash-vs-zsh/

Согласен, спасибо, переименовал статью.
Касательно сравнения шо Вы приложили - кажется весьма абстрактным, например
Speed: fast vs very fast
Или Posix complience.
Эти вещи как-то не дают мне представления прям о функционале, который может мне быть полезным
Поэтому свою статью разбавлял скриншотами и примерами
Вообще круто сделано у nushell'a (https://www.nushell.sh/), когда на главной странице сразу видишь скрины/гифки функционала, сразу хочется поставить

Извините, а можно вас спросить?
Зачем вам канал? Ну или в другой формулировке - зачем вам набирать подписчиков? До размера, когда можно будет что-то впаривать пастве, он явно не дорастёт - слишком узкая ниша и слишком мало постов.
Зачем канал вашим подписчикам? Особенно учитывая, что посты там раз в месяц, и половина - или "я написал на Хабр", или "Я нашёл на Хабре" - то есть желающие это прочтут и так.

Только не говорите "все побежали, и я побежал" - это как-то совсем глупо.

Телеграм-каналы прекрасно монетизируются. Яндекс.Рекламу подрубить и вперёд. Набрать актив и потом продать скамеру канал — это как за милую душу. Те, кто утверждают, что этого делать не будут, просто не нашли своего покупателя. Принципиальных в Телеграме нет.

Канал для меня служит в первую очередь цифровым аватаром, поэтому я там и аггрегирую "я написал", "я законтрибьютил", "я сделал видос"
Подписчикам я ничего не продаю, да и не собираюсь. Канал помогает мне при продажах, это правда, потому что можно что-то узнать обо мне, прежде чем писать в личку
Зачем подписываются? Наверно интересно, я ж не заставляю :)

Окей, зачем канал лично вам - стало понятнее. Но вот зачем вам подписчики, а подписчикам - канал, вы не знаете. Ну ок.

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

Еще один лайфхак - на винде есть Oh My Posh, который в павершел добавляет многие упомянутые фичи, делая его сильно более юзабельным.

Спасибо! Даже не слышал про fish до этого

Тогда уже nushell вместо zsh на *nix/powershell на windows

Запустил ps и влюбился) Спасибо!

Что-то не заметил преимуществ NuShell перед PowerShell. На лендинге абсолютно всё, что есть в NuShell, первым появилось в PowerShell.

Такое ощущение, что NuShell пытаются пофиксить косяки старых оболочек и привести работу с сырыми текстовыми данными в объектную модель... которая нативна для PowerShell.

Вопрос: где преимущества? Или это всё вкусовщина?

Да, вкусовщина по большей части. Из плюсов могу только выделить нативную работу со структурами, типа json/yaml/csv/etc., ЕМНИП в powershell оно так же не нативно, как в bash (ну то есть через jq/yq/etc.)

Для кого-то с диагнозом "непринятие всего от microsoft" может быть плюсом кроссплатформенность.

Он прямо заметно более шустрый и команды у него не такие длинные как в posh

Не только кстати в PS. Он и в других терминалах работает: cmd, nushell, wezterm. Но так или иначе одно его мало, по крайней мере нужен ещё clink (для автодополнения).

Как по мне такие фичи, особенно подсветка синтаксиса должны быть по умолчанию, хотя бы в популярных дистрибутивах типо Убунты.
Я первые пару лет программирования вообще не знал что есть другие командные оболочки. И тут на новой работе у всех установлен Видоус по умолчанию. Я открываю PowerShell и бум - там подсветка синтаксиса! Я в шоке - вроде Линукс известен тем, что с ним нужно часто работать из терминала, а у винды - терминал намного удобнее!
Оказалось что нужно такие удобства доустанавливать. Мне посоветовали fish - на нём до сих пор и сижу. Моя терминальная жизнь разделилась на до и после.

Недавно как раз сменил bash на zsh+ oh my zsh. Стало красиво и по большей части всё.

Гит я юзаю из ui phpstorm или goland. Всё остальное вроде и так есть в bash, можно чуть в менее продвинутом виде, но тем не менее.

В общем особей разницы не заметил

Zsh стоит ставить сразу вместе с Oh-my-zsh.

Так стоит делать только, если вы хотите ознакомиться с плагинами и не против того, что часть включённого туда вам совершенно ненужна. На мой взгляд, лучше не использовать какие-либо менеджеры плагинов. Плагины - это просто скрипты, включаемые в основной конфиг (.zshrc) . Просто можно включить только то, что необходимо, не перегружая оболочку кучей бесполезных скриптов.

Поддерживаю. Вообще oh-my-zsh не лучший выбор, лаг на запуск нового экземпляра оболочки может доходить до одной секунды, что сильно бесит когда активно работаешь в чем то на подобии tmux. Попробуйте сначала подключить дефолтный zsh и запустить на нем бенчмарк, а потом при использовании oh-my-zsh с плагинами. После, можно пойти по стопам других людей и заняться профилированием оболочки (Раз, два), но это уже совсем для фанатов oh-my-zsh.

Вообще oh-my-zsh не лучший выбор

Поддерживаю. ИМХО, если уж и ставить подобный бандл, то лучше powerlevel10k (от автора приведенного бенчмарка, а он шарит) или starship (скомпиленный rust, кажется, будет быстрее, чем sh)

Что даст переход на zsh разработчику?

После 5 лет на zsh после 4х лет на bash, могу уверенно ответить - ничего, ничего не даст.

Да, можно сделать "красиво" с помощью костылей типа oh-my-zsh (хуже), powerlevel10k (лучше) или своими руками, но с большего - мало что поменяется, т.к. большая часть плагинов это все же bash диалект (например в большинстве моих плагинов шебанги #!/usr/bin/bash, ну а если хочется "все самое новое", то тогда уже ИМХО лучше на nushell переехать

Плагины git и composer, судя по тому что написано в статье - экономия на спичках вида "спасибо > спс"

Для себя имею такой набор плагинов:

  1. https://github.com/tony-sol/git-aware-prompt - состояние репозитория для подстановки в PROMPT/RPROMPT

  2. https://github.com/marlonrichert/zsh-autocomplete - автокомплит

  3. https://github.com/zsh-users/zsh-autosuggestions - предложение на основе истории/окружения

  4. https://github.com/zsh-users/zsh-completions - набор скриптов комплита от сообщества

  5. https://github.com/qoomon/zsh-lazyload - ленивая загрузка (использую для автодополнения команд, например lazyload kubectl -- 'source <(kubectl completion zsh)', благодаря чему уменьшается лаг (см. https://github.com/romkatv/zsh-bench)

  6. https://github.com/tony-sol/zsh-ssh - интеграция fzf в автодополнение ssh

Для состояния репозитория https://github.com/magicmonty/bash-git-prompt использую. Очень гибко настраивается, можно добавить отображение кучи всего, например информации по virtualenv.

https://github.com/magicmonty/bash-git-prompt использую

да на самом деле тысячи их - писать плагины довольно просто, поэтому очень много однотипных или форков, почти не отличающихся от оригинала (да, у меня тоже форк)

Алиасы так-то и в баше делать можно, а зачем набирать gl вместо git pull я не понимаю. Вы не можете никак запомнить полную команду или так критично пол секунды сэкономить? Я в алиасы заношу, например, длинные команды коннекта к серверам с кучей параметров, ip адресами и т.д., т.е. то, что нафиг не надо запоминать.

А вместо автодополнения, основанного на истории я просто использую fzf для нечёткого поиска по истории, это очень удобно. Пропишите в ~/.bashrc что-то подобное и наслаждайтесь:

fzf_history_search() {
  local selected_command
  selected_command=$(history | fzf +s --tac | sed 's/ *[0-9]* *//')
  if [ -n "$selected_command" ]; then
    READLINE_LINE="$selected_command"
    READLINE_POINT=${#READLINE_LINE}
  fi
}

bind -x '"\C-r": fzf_history_search'

В общем, я так и не понял, зачем мне zsh вместо баша.

В топку zsh с его плагинами. На старом ноуте zsh который два дня настраивал, на новом fish. Fish покруче и без танцев с бубном - поставил и сразу работает как надо. На сервере оставил в стоке bash а на открытие tmux переход на fish

zsh после того как на него плагинов навесить для удобства становится ну куда медленнее баша, nushell же при таких же настройках летает, как и fish.

Поэтому вы можете хотеть понастраивать хранение истории

Шта?! (-:

всегда можно добавить в .bashrc HISTSIZE=-1 и HISTFILESIZE=-1, если очень хочется...

Из статьи решительно непонятно, почему всё-таки старшие коллеги советовали переехать на zsh. У меня так и осталось впечатление, которое сформировалось лет 10 назад - нафиг оно не нужно.

starship + atuin и глубоко фиолетово что там bash/zsh - быстрее не получится. Когда привыкните, а это быстро - на сервере с голой оболочкой будет ломать, сильно.

Sign up to leave a comment.

Articles