LINUX.ORG.RU

Вопрос о совместимости Bash и Zsh, а так же о принципиальности выбора между ними

 , ,


0

2

Здравствуйте.

Мне известно, что Bash и Zsh не полностью совместимы друг с другом. В связи с этим такой вопрос: прав ли я, полагая, что это совершенно неважно? Приведу свои доводы:

1.) Есть два режима использования командного интерпретатора - интерактивный (когда пользователь вводит команды) и неинтерактивный (когда интерпретатор выполняет какой-либо скрипт).

2.) Есть два способа запустить скрипт. Либо он делается исполняемым и вызывается по пути к нему, либо вызывается интерпретатор и ему указывается путь к скрипту.

3.) В первом случае интерпретатор выбирается автоматически исходя из shabang в начале скрипта.

4.) Во тором случае интерпретатор указывает сам пользователь.

5.) При этом, большая часть shell-скриптов написана совместимо с sh. Те, что не написаны совместимо с sh, совместимы с bash. Поскольку bash обратно совместим с sh, любой shell-скрипт можно открывать интерпретатором bash и не промахнуться.

6.) На zsh/fish и других скрипты не пишут, поскольку основные отличия zsh/fish и прочих от sh и bash направлены на увеличение удобства интерактивного использования, а в написании скриптов бесполезны.

7.) Таким образом вопрос со скриптами решается сам собой: писать на bash/sh, выполнять bash'ем - и не прогадаешь. И в любом случае совсем не играет роли, какой интерпретатор используется, как основной.

8.) В режиме интерактивного использования всё определяется исключительно личными предпочтениями пользователя, потому что ни о какой совместимости при этом речи не идёт.

Правильны ли мои мысли?

★★

Последнее исправление: Valdor (всего исправлений: 1)

При этом, большая часть shell-скриптов написана совместимо с sh. Те, что не написаны совместимо с sh, совместимы с bash. Поскольку bash обратно совместим с sh, любой shell-скрипт можно открывать интерпретатором bash и не промахнуться.

Не совместимо с sh, а именно для него.

Deleted
()

5.) При этом, большая часть shell-скриптов написана совместимо с sh. Те, что не написаны совместимо с sh, совместимы с bash. Поскольку bash обратно совместим с sh, любой shell-скрипт можно открывать интерпретатором bash и не промахнуться.

Не любой, см. csh

at ★★
()

5.) При этом, большая часть shell-скриптов написана совместимо с sh. Те, что не написаны совместимо с sh, совместимы с bash. Поскольку bash обратно совместим с sh, любой shell-скрипт можно открывать интерпретатором bash и не промахнуться.
6.) На zsh/fish и других скрипты не пишут, поскольку основные отличия zsh/fish и прочих от sh и bash направлены на увеличение удобства интерактивного использования, а в написании скриптов бесполезны.

Скорее потому что bash больше распространен. zsh тоже обратно совместим с sh(а также с csh и ksh) и в zsh возможностей для скриптинга больше(в т.ч. годных для интерактивного использования).

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

Я грепнул всё, что у меня лежит в /usr/bin,/usr/sbin,/bin,/sbin на предмет ша-банга с csh, rcsh, tcsh, ничего не нашёл. В какой сфере они используются и почему?

Valdor ★★
() автор топика
Последнее исправление: Valdor (всего исправлений: 1)

Ну так в начале скриптов обычно указывают #!/bin/bash, т.е не обязательно в строке с тем же zsh писать bash script, а можно просто script и всё и так заработает.

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

Пример боле менее распространенной системы с csh это freebsd

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

Не все.

$ find / -name '*.sh' 2>/dev/null | xargs -L1 grep '^#!' | sort | uniq -c
      2 #! /bin/bash
     82 #!/bin/bash
     37 #! /bin/sh
    255 #!/bin/sh
      2 #!/bin/sh -x
      3 #! $SHELL
      4 #!/usr/bin/awk -f

CYB3R ★★★★★
()

При разработке bash скриптов придётся переключаться на bash для интерактивной отладки.

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

Почему «к сожалению»? Подходят к написанию скрипта исходя из задачи - кому-то нужна переносимость, кому-то скорость, кому-то легковесность, а у кого-то и выбора нет.

Bfgeshka ★★★★★
()

6.) На zsh/fish и других скрипты не пишут, поскольку основные отличия zsh/fish и прочих от sh и bash направлены на увеличение удобства интерактивного использования, а в написании скриптов бесполезны.

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

Я сам предпочитаю писать скрипты для zsh, а не для bash, когда возможно.

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

еси не читать башизмов типа [[. Вообще в мире сранного опенсурса (и не только! nbexec например, по крайней мере в каких то версиях) разработчики почему то имеют обыкновение не знать разницы между bash и sh

arcanis ★★★★
()
13 января 2016 г.

Ненужно сравнивать zsh и fish. Они не равны. Fish - поделка для хипстеров, он даже не поддерживает кучу команд. А вот zsh, как раз многое умеет. Ещё zsh не zsh, без oh-my-zsh =)

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