Яку оболонку я повинен використовувати - tcsh vs bash? [зачинено]


30

Я використовую tcshвже давно. Але щоразу, коли я щось шукаю, я часто виявляю, що вказані методи є bashспецифічними. Навіть синтаксис скриптів оболонки відрізняється для двох.

З того, що я зазнав у пошуку та навчанні в Інтернеті, bashсхоже, є більш поширеною оболонкою. Навіть кількість запитань на цьому веб-сайті позначено bashнабагато більше (в п’ять разів більше), ніж кількість запитаних питань tcsh.

Отже, мені цікаво, чи варто переходити на баш. Як ти гадаєш?

Чому я повинен дотримуватися tcshАБО чому я повинен переходити bash?


3
Я не думаю, що я ніколи не чув, щоб хтось перейшов на баш; зазвичай люди використовують bash, оскільки це за замовчуванням, а потім переходять на щось краще :)
Michael Mrozek

6
@Michael: Ну, OS X перейшла з tcsh на bash у версії 10.3, тож це один випадок, коли люди переходять на bash.
sepp2k

5
ви повинні використовувати zsh(на яку ОС X повинен був перейти)
xenoterracide

6
але писати свої сценарії для dashтих, хто повинен працювати над чим завгодно.
ксенотерацид

2
Я вважаю дещо забавним, що всі пропонують zsh. У той же час це не цікаво, адже він насправді не відповідає на питання ops. саме тому я зробив свою відповідь zsh коментар, а не відповідь. Хоча випряміть, якщо у вас виникають проблеми з навчанням, як оболонку сценарію tcsh, перейдіть до того, що знаєте. Якщо у вас виникли проблеми з tcshпублікацією вашої проблеми тут. Не вмикайте тільки «причину . Існує більше публікацій bash, оскільки він встановлений за замовчуванням у більшості місць, що не робить його кращим.
ксенотеррацид

Відповіді:


22

Вивчивши баш, я виявив, що tcsh - це трохи крок назад. Наприклад, те, що я міг би легко зробити в баші, мені важко зробити в tcsh. Моє запитання по tcsh . Інтернет-підтримка та документація також набагато кращі для bash і дуже обмежені для tcsh. Кількість книг O'Reilly про 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 , але ніколи не перевіряйте нічого, крім баш , ви не гарантували сумісний сценарій! Краще просто використовувати #!/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 не слід зважати на "одержимі". Викликання параметрів shза замовчуванням збігається з debian / ubuntu, і вже деякий час. Я знаю, що це не вважатиметься "гарантованим", але рідко я вважаю, що портативність є "гарантованою". Я був би ще більш зарезервований зі «сценарієм оболонки».
Дж. М. Бекер

6

Яка оболонка? Відкрийте для себе найкраще співвідношення "простота у використанні" проти "клопотів" ...

Якщо ви не можете знайти достатньо загальних прикладів та пояснень для вашої оболонки "Maserati", то її додаткова продуктивність може бути більшою проблемою, ніж бонусом ...

Я вважав цю статтю / веб-сайт цікавим; можливо, варто прочитати:
відмінності оболонки UNIX та як змінити оболонку


0

zsh, мабуть, має ще кілька подібностей до tcsh, ніж bash.

Дивіться: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

Люди часто стверджують, що zsh може робити те, що базуватися не може, але я не вважав, що це так. Те , що я вже бачив, що для Zsh це простіше, вбудоване або включений за замовчуванням, в той час як в БАШЕЄВ це аддон скрипт, має бути включено, або складніше.

(відмова від відповідальності: я баш-користувач, який іноді розглядав можливість переходу на zsh)


-3

З якихось причин я звик до ткш, як і раніше, ніж 20 років тому. Як я знаю, bash походить від sh, але, звичайно, з великою кількістю csh речей, але tcsh походить з csh. Мені дуже подобається завершення команди в перші дні, але вона доступна в більшості оболонок зараз. Чи слід дотримуватися сценаріїв / bin / sh?


6
Це насправді не намагається відповісти на питання. Це більше коментар.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.