Почему для скриптинга в шелле используется bash а не более современный язык программирования?

Насколько я понимаю раньше шеллы использовались в качестве примитивных высокоуровневых языков. Сейчас у нас есть Perl, Python, nodejs, php...
Какой тогда смысл в bash (кроме поддержки легаси скриптов, разумеется), если для всего в осях есть сис. вызовы, а в языках программирования - соответствующие обертки над этими сис. вызовами.
  • Вопрос задан
  • 2146 просмотров
Решения вопроса 3
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Насколько я понимаю раньше шеллы использовались в качестве примитивных высокоуровневых языков. Сейчас у нас есть Perl, Python, nodejs, php...


Ну давайте вместо рабочего стола пользователю дадим сразу Visual Studio, ведь какая разница как программу запускать - иконкой на рабочем столе, или форкать из высокоуровневого языка?

shell - это оболочка операционной системы. То, что кроме графической есть еще и command line interface - это совершенно нормально и адекватно. И шелл позволяет пользователю и администратору работать в операционной системе гораздо удобнее, чем через язык программирования.

То, что sh/bash и другие, настолько развиты что сами по себе являются неплохими языками программирования - это просто следствие того, что командый интерфейс и создавался тогда, когда каждый пользователь был немного программистом, и следствие того, что cmd line удобен для автоматизации просто по своей архитектуре.
Поэтому Powershell, bash/zsh/ksh будут продолжать развиваться.

Но ты можешь попробовать писать всю автоматизацию на любом другом языке программирования. И со временем немного столкнуться с тем, что скрипт, написанный на шелл 10 лет назад - просто работает, а скрипт написанный на питон 10 лет назад - несовместим.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вопрос одновременно дебильный и нормальный.
Автор просто не может нормально словами написать, чего хочет.
Для современного поколения, воспитанного ютубой, это нормально.
Если бы вопрос можно было задать с помощью слов "гы-гы", "круто, чувак" и смайликов, то у него бы все получилось.
А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

А мычит он не про сам шелл, а про используемый в нем скриптовый язык.
И ответ получается очень простой - для некоторых задач Bash scripting language тупо подходит лучше. Не говоря уже про интеграцию скриптового языка баш в командную оболочку баш, какой никогда не добиться с помощью "обёрток".

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

Так что да - или легаси, или тупо адекватность задаче.

Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше - это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.
Ответ написан
DevMan
@DevMan
Марат Нагаев,
зачем нужна оболочка - понятно, вопрос зачем нужен такой язык как баш
да непонятно вам ничего: bash (как и любой другой unix–shell) – не отдельный язык, который специально устанавливается, это и есть командная оболочка. со встроенными возможностями скриптования (которые являются "примитивным" ЯП и которые отличаются по возможностям между разными оболочками).

да можно не использовать эту возможность, а устанавливать жс или питон или руби или еще что–то и пользоваться их возможностями.
но:
1. не может быть речи о переносимости без зависимостей, далеко не всегда нужных.
2. далеко не всегда возможно (например, на встраиваемых системах).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
Попробуйте сами поработать интерактивно и, надеюсь, все сразу станет понятно:
sudo useradd -m perluser -s /usr/bin/perl && sudo -u perluser -i

sudo useradd -m phpuser -s /usr/bin/php && sudo -u phpuser -i
Ответ написан
Adler_lug
@Adler_lug
Забивать гвозди можно и микроскопом, но молотком все таки удобнее...
Ответ написан
Комментировать
@sand3001
Всего по немногу
bash нужен для интерактивного взаимодействия с системой без графического интерфейса - типа cmd или ps в винде. Не говоря уже о том что bash может использоваться как скриптовый язык. Если Вы не знаете зачем нужен bash - может и вопрос этот поднимать бессмысленно?
Ответ написан
Adamos
@Adamos
Вот тот редкий случай, когда нужно вспомнить, что Линукс - это GNU/Linux.
Shell+GNU - это, по факту, и есть высокоуровневый ЯЗЫК для работы с ОС.
Гораздо лучше приспособленный к этому, чем любой из универсальных.
Ответ написан
Комментировать
Нельзя ставить знак равенства между командной оболочкой операционной системы и интерпретатором языка программирования работающим по принципу REPL (Read Evelute Print Loop)...
Ответ написан
Комментировать
@ProFfeSsoRr
Сис.админ по Linux
В общем-то есть шел с питоном, но тут дело в том, что "нельзя просто взять и ..." Вот, я помню, что кто-то делал шел с питоном, но я даже не помню названия. Потому что зачем он мне? Я знаю Bash. Ко мне придет учится молодой человек - я ему буду показывать, что сам умею. И он в итоге тоже научится Bash'у. Ну вот как-то так это много лет уже и тянется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы