Какую оболочку мне использовать - tcsh против bash? [закрыто]

30

Я уже давно пользуюсь tcsh. Но всякий раз, когда я что-то ищу, я часто нахожу, что указанные методы bashспецифичны. Даже синтаксис для сценариев оболочки отличается для двух.

Судя по тому, что я испытал в интернете, я bashнашел более распространенную оболочку. Даже количество вопросов на этом сайте помечено bashнамного больше (в пять раз больше), чем количество вопросов, помеченных tcsh.

Итак, мне интересно, должен ли я перейти на Bash. Что вы думаете?

Почему я должен придерживаться tcshИЛИ, почему я должен перейти к bash?

Lazer
источник
3
Я не думаю, что когда-либо слышал о том, чтобы кто-то переключался на bash; обычно люди используют bash, потому что это по умолчанию, а затем переключаются на что-то лучшее :)
Michael Mrozek
6
@Michael: Ну, OS X перешла с tcsh на bash в версии 10.3, так что это один из случаев, когда люди переходят на bash.
sepp2k
5
Вы должны использовать zsh(на какую OS X должен был переключиться)
xenoterracide
6
но написать свои сценарии для dashтех, кто должен работать на что угодно.
ксенотеррацид
2
Я нахожу несколько забавным, что все предлагают zsh. В то же время это не забавно, потому что на самом деле не отвечает на вопрос ops. вот почему я сделал мой ответ Zsh комментарием, а не ответом. Хотя, если у вас нет проблем с обучением интерпретации сценариев tcsh, используйте то, что вы знаете. Если у вас есть проблемы с использованием, tcshнапишите о вашей проблеме здесь. Не переключайтесь только потому что . Есть больше постов bash, потому что они установлены по умолчанию в большем количестве мест, что не делает его лучше.
ксенотеррацид

Ответы:

22

После изучения bash я обнаружил, что tcsh - это шаг назад. Например, то, что я мог легко сделать в bash, мне трудно сделать в tcsh. Мой вопрос по tcsh . Интернет-поддержка и документация также намного лучше для bash и очень ограничены для tcsh. Количество книг О'Рейли по bash велико, но я не нашел ничего подобного для tcsh.

Эндрю Стерн
источник
26

На самом деле, вы должны перейти к zsh! Это существенно обратная совместимость и у него есть все полезности bashс большим огромным Помогающим благоговением . Есть даже книга (хотя я не удосужился прочитать ее).

Я признаю одну причину, чтобы не использовать zshболее, bashно если вы постоянно работаете над несколькими новыми установками, это на самом деле не применимо. Особенно, если вы знаете о самых существенных различиях . Это, однако, действительно сродни различиям между vimи vi; ты не хочешь быть наивным, но практически это не страшно. Даже хардкорные vimпользователи могут ориентироваться emacsи наоборот.

оборота гвкв
источник
20

Вы должны переключиться на POSIX-совместимую оболочку http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , например, bash, ksh, dash, но не zsh и, конечно, не tcsh. Прошло много времени с тех пор, как csh был объявлен плохим выбором для сценариев: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh не сильно отличается в этой области.

При написании сценариев обязательно используйте конструкции только для POSIX (т.е. избегайте ошибок и тому подобного), если вы не хотите снова блокироваться в чем-то непереносимом.

оборота
источник
7

Я думаю, что навязчивая совместимость не имеет смысла. Если вы пытаетесь сделать все совместимым, ставя #!/bin/shвверху и используя расширения .sh , но никогда не тестируя ничего, кроме bash , вы не гарантируете совместимый скрипт! Лучше всего использовать #!/bin/bashи .bash, чтобы пользователи действительно знали реальное требование.

Если вы знаете zsh , tcsh или что-то еще лучше, чем bash , и у вас есть для этого хорошее справочное руководство, не откладывайте . Точно так же, как люди ожидают установить Perl или Python, чтобы иметь возможность запускать некоторые скрипты, они также могут справиться с установкой вашей малоизвестной оболочки! : D

Кевин Канту
источник
1
На самом деле не /bin/shобязательно указывать на korn-совместимую оболочку, в то время как tcsh является оболочкой, производной от csh. Вероятно, это /bin/shуже указывает на bash или другую совместимую оболочку, и почти наверняка на нее не повлияет изменение пользовательской оболочки. csh и sh полностью несовместимы.
Мацей Печотка
1
Я не уверен, что гарантировано. Я знаю, что есть много людей, пишущих сценарии для "/ bin / sh", которые изобилуют Bash-isms, которые Bash-as- / bin / sh допускает, но которые сбивают с толку dash( ashсовместимая оболочка Debian и Bourne).
Кевин Канту
Еще один момент: #! / Bin / bash не будет ограничивать используемую версию Bash, и есть некоторые несовместимости от одной версии к другой, хотя худшее было введено давно с v2. Я не знаю каких-либо несовместимостей между версиями в режиме совместимости с POSIX.
Чарльз Стюарт
Любой может свободно писать для любой оболочки, которую хочет, и вы делаете правильное замечание в отношении #!/bin/shодного -nePOSIX. Однако забота о совместимости с POSIX не должна относиться к типу соображений, помеченных как «одержимые». Вызов shdash по умолчанию с помощью debian / ubuntu, и уже некоторое время. Я знаю, что это не будет квалифицироваться как «гарантированное», но редко я буду считать что-либо переносимое «гарантированным». Я был бы еще более сдержан с помощью «сценария оболочки».
JM Becker
6

Какая оболочка? Перейти на тот, с лучшим соотношением «простота использования» против «неприятностей» ...

Если вы не можете найти достаточно общих примеров и объяснений для вашей оболочки "Maserati", то ее дополнительная производительность может быть большей проблемой, чем бонусом ...

Я нашел эту статью / сайт интересным; это может быть стоит прочитать:
различия оболочек UNIX и как изменить вашу оболочку

Peter.O
источник
0

zsh, вероятно, имеет несколько больше сходства с tcsh, чем bash.

Смотрите: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

Люди часто утверждают, что zsh может делать то, что не может bash, но я не обнаружил, что это так. То , что я уже видел, что для Zsh это проще, встроенное или включен по умолчанию, в то время как в Баше это аддон скрипт, должно быть включено, или сложнее.

(отказ от ответственности: я пользователь bash, который иногда рассматривал возможность перехода на zsh)

KellyClowers
источник
-3

По некоторым причинам я использовал tcsh, как и 20 лет назад. Как я знаю, bash происходит из sh, но, конечно, с большим количеством csh, но tcsh происходит из csh. Мне очень нравится завершение команды в первые дни, но сейчас она доступна в большинстве оболочек. Для сценариев, мы будем придерживаться / bin / sh?

Дэвид
источник
6
Это на самом деле не пытается ответить на вопрос. Это больше комментарий.
SLM