LINUX.ORG.RU

Почему bash стал стандартом, а zsh нет?

 ,


1

2

Братья! :)

Еще в незапамятные времена я рьяно взялся изучать основы не с bash, а с zsh и был поражен ее возможностями. Я взахлеб «курил» документацию и man'ы этой оболочки и ... Тут мой наставник меня «обломал»: «Брось и учи bash! О zsh забудь! Она тебе не нужна.»

Годы прошли, а я всё думаю: почему bash стал стандартом, а zsh нет? Ведь у zsh бездна возможностей!

Кто-нибудь может рассказать о применении zsh на производственных компьютерах, на серверах, на каких-нибудь рабочих станциях? Или zsh удел одиночек и гиков?

Спасибо за беседу и ваши отзывы!

Ответ на: комментарий от iVS

Меня интересует, почему в debian предпочли systemd, и фиг найдешь же ответ

linux.org.ru/search.jsp?q=debian+голосование+systemd

bass ★★★★★
()
Ответ на: комментарий от MAGNANIMOUS

Если ты сам познаёшь мир, то чего тебя бесит, что его познают другие?

Ты решил, что твой топик меня бесит и я над тобой издеваюсь? Ни в коем случае. Я сам пользуюсь zsh. А написал я это к тому, чтобы объяснить: синдром утёнка и «я так делаю, потому что так все делают» бывают и среди гиков линуксоидов.

proud_anon ★★★★★
()
Ответ на: комментарий от abs

mac OS X

у пользователя; а у root сессии по-умолчанию sh.

vim
()
Ответ на: комментарий от blackst0ne

Настройкой через браузер, например :)

vim
()

Ты представь себе какой бугурт будет если zsh дефолтным шеллом в дистрибутивы поставят...
Народ скрипты на баше уже лет 30 пишет, это всёравно что спрашивать почему на большинстве компов раскладка по Shift+Alt переключается или почему на мыше 2 основные кнопки (к маководам правда не то не другое не относится)

Daimon
()

Потому что GNU и не GNU соответственно.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от deterenkelt
FLAG_VAR=f
[ "$FLAG_VAR" = f ] && echo No, it’s not set

Это что вообще? Как оно может быть не равно “f” после присваивания? Почему не использовать [[ … ]] вместо [?

[ -v FLAG_VAR ] || echo No, it’s not set

Проверить, установлена ли переменная?

(( ${+FLAG_VAR} )) || echo NOUP

фичи из баша

АХАХАХАХАХАХАХА

anonymous
()
Ответ на: комментарий от anonymous

Это что вообще?

Это пример. На что ещё это было похоже?

Как оно может быть не равно “f” после присваивания?

А проверка абстрактно названной переменной в вакууме тебя не смущает? А отсутствие шебанга?

Почему не использовать [[ … ]] вместо [?

[[ полезен, когда нужно сравнить что-то типа

[[ "$VALUE" == @(fruit|vegetable|kill_it_with_fire) ]] && … 

Ну или

[[ "$MUST_BE_A_NUMBER" =~ ^[0-9]+$ ]] && …
Алфавитная сортировка по текущей локали требуется крайне редко, но до кучи пусть будет и она
[[ "$string1" > "$string2" ]] && …
В остальных случаях — которых 90% — [ и [[ более-менее эквивалентны, и я не вижу смысла писать на две скобки больше.

Проверить, установлена ли переменная?

Да. //Как будто из вывода echo в том примере это не было очевидно.

как в zsh проверить, уcтановена ли переменная?

(( ${+FLAG_VAR} )) ||

Мде.

echo NOUP

КАКХАЧЮТАКИПЕШУ всех стран — соединяйтесь!

АХАХАХАХАХАХАХА

Ты ещё промахнуться на клавишу влево забыл. Как говорится, семь раз промахнись, один — отправь.

deterenkelt
()
Ответ на: комментарий от zolden

Я пока думал над ответом, меня раза два от смеха порвало, первый вариант был не очень цензурный, но напрашивался сам собой, а второй ты не поймёшь, поэтому я не знаю, что тебе написать, так как всё ещ ржу, будь здоров, люби zsh.

deterenkelt
()

Вокруг меня zsh стал стандартом на серверах и рабочих станциях. Bash используется немногими неосиляторами.

overmind88 ★★★★★
()
Ответ на: комментарий от overmind88

Да я принципиальных отличий тоже не заметил. Zsh удобен очень. Fish - тоже.

kovrik ★★★★★
()
Ответ на: комментарий от deterenkelt

Я
мне
net
не
ага
чита
вах

Что это за словесный винегрет, и к чему вы решили адресовать его именно мне?

zolden ★★★★★
()
Ответ на: комментарий от anonymous

Скобочки, && и || вместо -a и -o; Word splitting отключается.

По-моему, это вполне укладывается в употреблённое мною понятие «более-менее эквивалентны». Уж извините, что моей целью было выделить наиболее часто употребляющиеся свойства [[, ради которых я отхожу от [, поэтому не стал копипастить manpage на пастебин ради какого-то гоготуна с форума для слепых.

Что «мде»?

То и мде.

deterenkelt
()
Ответ на: комментарий от zolden

cловесный винегрет

Сам сочинил, сам и жуй.

вы

То «ты», то «вы», что-то ты какой-то неопределившийся…

deterenkelt
()
Ответ на: комментарий от proud_anon

синдром утёнка и «я так делаю, потому что так все делают» бывают и среди линуксоидов.

Мне попались учителя с таким синдромом :( Причём, весьма не простые в мире Linux люди.

А вообще, без фамилий конечно, но даже принадлежность к высшему эшелону линуксоидов ещё не означает, что с человека нужно брать пример. Это вы целиком и полностью правы.

MAGNANIMOUS
() автор топика
Ответ на: <"((>< от vim

vim

Я уже выбрал его, почитав этот тред :) Но мне так и не ответил «тот чувак» :) с чего начать его изучать по взрослому, чтобы овладеть как мастер?

Вообще, расскажите ваше мнение о нём: преимущества, недостатки, ошибки.

Спасибо!

MAGNANIMOUS
() автор топика

Всё просто же: из коробки непригодна. А bash после установки bash-completion (который еще много где вообще по-умолчанию ставится) становится неплохо настроенным zsh.

Ну и да, юникод, конечно.

unanimous ★★★★★
()
Ответ на: комментарий от unt1tled

Кому этот вопрос задавать-то? Линусу поидее пофиг должно быть, как и всем остальным разрабам ядра.

Именно Линус выбрал баш для линукса версии 0.01. С тех пор и повелось

Harald ★★★★★
()

«Брось и учи powershell! О zsh забудь! Она тебе не нужна.»
//fixed

amorpher ★★★★★
()

и был поражен ее возможностями
куча свистелок-перделок
но синтаксис алгола, а списки до сих пор не сделаны по-человечески

В этом весь linux, лол.

quantum-troll ★★★★★
()
Ответ на: комментарий от unanimous

Ну и да, юникод, конечно

Ну и да, юникод, конечно

% пыщпыщъä妈=123              
% echo $пыщпыщъä妈            
123

zolden ★★★★★
()
Ответ на: комментарий от fang90

а fish еще безднатее

Да ну? fish это как раз дно.

Gotf ★★★
()

ИМХО потому, что bash является точным расширением POSIX shell, и все скрипты на POSIX работают и в bash.

emulek
()
Ответ на: комментарий от emulek

зачем мне этот зоопарк?
и все скрипты на POSIX работают и в

странно, что ты не задаёшь себе вопрос «зачем мне все скрипты?»

zolden ★★★★★
()
Ответ на: комментарий от deterenkelt

В остальных случаях — которых 90% — [ и [[ более-менее эквивалентны, и я не вижу смысла писать на две скобки больше.

Не эквивалентны. Одна скобка — это дословно вызов ф-ции test, тем самым: а) вызов подпроцесса; б) необходимость экранировать переменные (иначе вместо одного параметра можно передать несколько); в) синтаксис ужасен, это и =, -a, -o вместо однотипных ==, &&, ||.

iVS ★★★★★
()
Ответ на: комментарий от zolden

странно, что ты не задаёшь себе вопрос «зачем мне все скрипты?»

не задаю. Задачи везде разные, и выполняются разными скриптами. Есть в них похожие моменты, эти моменты обрабатываются программами(утилитами), например coreutils.

Ну например задача бекапа: конечно можно написать супермегабекапилку, но зачем? Её возможности будут всё равно использоваться везде на 5% (но везде будут _свои_ 5%), зачемтянуть 95% ненужного мусора? Проще написать скрипт, который выполняет ровно эти нужные 5%.

Где ты видишь «зоопарк»? Bash это всего-лишь «клей» для склейки других утилит именно в то, что нужно здесь и сейчас. Заодно это удобная интерактивная оболочка, но для меня это приятный бонус, а не основной функционал.

emulek
()
Ответ на: комментарий от unanimous

А bash после установки bash-completion ... становится неплохо настроенным zsh.

Тебя жестоко обманули.

iVS ★★★★★
()
Ответ на: комментарий от emulek

ИМХО потому, что bash является точным расширением POSIX shell, и все скрипты на POSIX работают и в bash.

По умолчанию нет же. Нужен вызов set с каким-то ключом, что почти никто не делает.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Одна скобка — это дословно вызов ф-ции test, тем самым: а) вызов подпроцесс

Ты где такое вычитал?

необходимость экранировать переменные (иначе вместо одного параметра можно передать несколько)

Ты про pathname expansion? Если же ну вот очень надо матчить в тесте всякие звёздочки, нормальные люди ставят set -f перед выражением, а то и в начале скрипта, один хрен кому он нужен этот pathname expansion внутри скрипта.

синтаксис ужасен

Мите-мите, минна-сан, синтаксический эксперт.

это и =, -a, -o вместо однотипных ==, &&, ||.

= писать короче, чем ==. По-моему когда выражение стоит в квадратных скобках и знак равенства отбит пробелами, его сложно перепутать с присваиванием. Что до -a и -o, мне кажется, это даже лучше, чем && и ||, потому что так они не создают визуальной путаницы с соответствующими управляющими операторами.

deterenkelt
()
Ответ на: комментарий от mandala

Ты сегодня таблетки принять забыл?

anonymous
()

Я думаю, потому же, почему mp3 стал стандартом, а ogg - нет: он просто первым достаточно качественно решал все поставленные задачи. А сейчас незначительные преимущества одного и недостатки другого уже не способны изменить стандарт де-факто.

PS: если при написании скрипта становится недостаточно возможностей sh/bash, это не повод смотреть в сторону других шеллов, а повод смотреть на полноценные языки программирования.

si0 ★★★
()
Ответ на: комментарий от deterenkelt

>Одна скобка — это дословно вызов ф-ции test, тем самым: а) вызов подпроцесс

Ты где такое вычитал?


$ which [
/usr/bin/[
$ ls -l "/usr/bin/["
-rwxr-xr-x 1 root root 35248 Jan 27  2013 /usr/bin/[
si0 ★★★
()
Ответ на: комментарий от iVS

bash является точным расширением POSIX shell

По умолчанию нет же.

да.

Нужен вызов set с каким-то ключом, что почти никто не делает.

за то многие пишут в начале скрипта #!/bin/sh, а это даёт точно такой же эффект, когда в системе установлен bash.

emulek
()
Ответ на: комментарий от DeadEye

Слабак, даже zsh не осилил.

кроме как «на слабо», другие аргументы будут, или засчитывать слив?

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.