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



@nagayev

Насколько я понимаю раньше шеллы использовались в качестве примитивных высокоуровневых языков. Сейчас у нас есть Perl, Python, nodejs, php…
Какой тогда смысл в bash (кроме поддержки легаси скриптов, разумеется), если для всего в осях есть сис. вызовы, а в языках программирования – соответствующие обертки над этими сис. вызовами.


Решения вопроса 0


Ответы на вопрос 8



@saboteur_kiev Куратор тега Linux

Насколько я понимаю раньше шеллы использовались в качестве примитивных высокоуровневых языков. Сейчас у нас есть Perl, Python, nodejs, php…

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

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

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

Но ты можешь попробовать писать всю автоматизацию на любом другом языке программирования. И со временем немного столкнуться с тем, что скрипт, написанный на шелл 10 лет назад – просто работает, а скрипт написанный на питон 10 лет назад – несовместим.



@FanatPHP

Вопрос одновременно дебильный и нормальный.
Автор просто не может нормально словами написать, чего хочет.
Для современного поколения, воспитанного ютубой, это нормально.
Если бы вопрос можно было задать с помощью слов “гы-гы”, “круто, чувак” и смайликов, то у него бы все получилось.
А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

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

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

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

Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше – это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.



@dtmse

Попробуйте сами поработать интерактивно и, надеюсь, все сразу станет понятно:

sudo useradd -m perluser -s /usr/bin/perl && sudo -u perluser -i

sudo useradd -m phpuser -s /usr/bin/php && sudo -u phpuser -i



@dikey_0ficial

для работы в консоли



@sand3001

bash нужен для интерактивного взаимодействия с системой без графического интерфейса – типа cmd или ps в винде. Не говоря уже о том что bash может использоваться как скриптовый язык. Если Вы не знаете зачем нужен bash – может и вопрос этот поднимать бессмысленно?



@Adamos

Вот тот редкий случай, когда нужно вспомнить, что Линукс – это GNU/Linux.
Shell+GNU – это, по факту, и есть высокоуровневый ЯЗЫК для работы с ОС.
Гораздо лучше приспособленный к этому, чем любой из универсальных.



@DevMan Куратор тега Linux

Марат Нагаев,

зачем нужна оболочка – понятно, вопрос зачем нужен такой язык как баш

да непонятно вам ничего: bash (как и любой другой unix–shell) – не отдельный язык, который специально устанавливается, это и есть командная оболочка. со встроенными возможностями скриптования (которые являются “примитивным” ЯП и которые отличаются по возможностям между разными оболочками).

да можно не использовать эту возможность, а устанавливать жс или питон или руби или еще что–то и пользоваться их возможностями.
но:
1. не может быть речи о переносимости без зависимостей, далеко не всегда нужных.
2. далеко не всегда возможно (например, на встраиваемых системах).



@Adler_lug

Забивать гвозди можно и микроскопом, но молотком все таки удобнее…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *