LINUX.ORG.RU

GNU Bash 4.0

 


0

0

Казалось бы, а что можно еще сделать в интерпретаторе командной строки? Оказывается — можно. Итак, вышла версия 4.0 Bourne Again SHell с более чем тридцатью изменениями в логе, в частности

  • $BASHPID теперь содержит PID текущего шелла
  • Опции autocd, checkjobs, compopt, read, dirspell, globstar
  • Переменные COMP_TYPE и COMP_KEY для тех, кто пользуется программируемым дополнением
  • bash будет более настойчиво (например, при недостатке памяти) пытаться запустить дочерние процессы
  • Встроенный ulimit теперь включает опции -b (размер буфера для сокетов) и -T (число потоков)
  • ...а также 10 изменений в библиотеке readline.
Подробности можно посмотреть в файле NEWS внутри архива с BASH.

>>> Скачать

★★★★★

Проверено: JB ()

Ответ на: комментарий от Demon37

>Стремиться к стандартизации. Перешёл на другой дистрибутив -- глядь, а там скрипты знакомы и понятны.

С таким же успехом можно стремиться к тому, чтобы все дистрибутивы были одинаковы :)

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

>В генту перешли на специальный бинарный интерпретатор для скриптов загрузки, и тоже аргументируют заботой о совместимости. И возможно это правильный подход, так как все системы загрузочных скриптов начинают создавать какие то библиотеки. Потому возможно имеет смысл сделать специальный бинарный интерпретатор для уже включающий в себя все необходимые функции. Это разумнее с точки зрения эффективности.

В смысле, бинарный интерпретатор? Бинарные скрипты, что ли, или как такие вещи называются?

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

>Это каким же образом переносимость ухудшается, если у системных скриптов её отродясь не было?

Ты о скриптах инициализации? Я -- нет.

Не на всех UNIX-системах по умолчанию установлен bash, поэтому вывод как бы напрашивается сам...

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

> В смысле, бинарный интерпретатор? Бинарные скрипты, что ли, или как такие вещи называются?

Бинарный == двухкомпонентный, да и то в очспцфчском слэнге ("бинарный химический боеприпас"). Можно сказать "двоичный" или надо умничать, применяя омонимичную транслитерацию там, где есть абсолютно не омонимичные русские термины???!!!

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

>>Можно. Ставь.

>Жду примера, на mac и windows :) и скрины от тебя, как образец. Ну и на Mandriva

гентушная система портов сейчас - это стандарт написания шелл скриптов , с которыми потом работает ПМ

Теоретически это может быть прикручено к любому линукс дистрибутиву. Другое дело, что идеология дистрибутивов прямо запрещает управление зависимостями при компиляции.

Например в Дебиане, их apt-build и source-build(уже не помню точное название) прямо запрещают пользователям менять зависимости

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

>С таким же успехом можно стремиться к тому, чтобы все дистрибутивы были одинаковы :)

Таки стремятся. http://www.linuxbase.org/ :)

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

>Не на всех UNIX-системах по умолчанию установлен bash, поэтому вывод как бы напрашивается сам...

Не стоит даже и пытаться стандартизировать скрипты? :)

Системные скрипты - инициализация, крон, некоторые скрипты, вызываемые при определённых событиях, что ещё?

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

>>В генту перешли на специальный бинарный интерпретатор для скриптов загрузки, и тоже аргументируют заботой о совместимости. И возможно это правильный подход, так как все системы загрузочных скриптов начинают создавать какие то библиотеки. Потому возможно имеет смысл сделать специальный бинарный интерпретатор для уже включающий в себя все необходимые функции. Это разумнее с точки зрения эффективности.

>В смысле, бинарный интерпретатор? Бинарные скрипты, что ли, или как такие вещи называются?

нет, скрипты не двоичные :-)

скажем скрипт интерпретируется не bash или sh а неким runscript. Считай просто специализированный шелл

в заголовке скрипта написанно :

#!/sbin/runscript

так поступали многие дистрибутивы, но обычно этот "runscript" был скриптом, а не программой.

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

>И эти изменения тянут на мажорную версию?

похоже добавили хеш. Это уже вполне тянет

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

Ну, а чем /sbin/runscript отличается от /bin/sh? Или используется некоторый специальный язык, отличный от шелл?

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

> Я не придираюсь, просто не понял, что за штуку ты описываешь?

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

Одно время подобными штуками увлекались американцы, считая их безопасными в обращении. Потом выяснилось, что это не так, и проект был закрыт.

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

>> for i in `seq 10`; do

> seq --- это POSIX? Если нет, то это ничем не лучше башизма для for

seq -- это абсолютно точно не POSIX. Специально залез в стандарт и посмотрел. :(

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

>Не стоит даже и пытаться стандартизировать скрипты? :)

Имеющиеся уже не стоит, пожалуй. Новые лучше писать переносимо.

>Системные скрипты - инициализация, крон, некоторые скрипты, вызываемые при определённых событиях, что ещё?

Этого разве мало? ;)

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

> Этого разве мало? ;) Дистрибутивозависимые - практически только инициализация. Остальные обычно идут с какими-то прогами и более-менее стандартны. А инициализацию стандартизировать - дело безнадёжное. Попробуй привести System V и BSD стили к общему виду. Тут уж стандартизация интерпретатора не поможет никак.

JaM
()
Ответ на: комментарий от A-234

> Знакомая как-то присылает файл и жалуется, что ексель его открывать не хочет. А все потому, что какой-то умник запаковал его зипом а расширение оставил xls. Вантуз эту ситуацию не прочухал, а миднайт сразу определил что это архив при попытке просмотра.

гы. Far в данной ситуации точно так же распознает архив, несмотря на расширение xls. Так что все прочухивается.

Tupoy_Wenduzyatneg
()
Ответ на: комментарий от Demon37

Что куда переносить? Сложно интерпритатор установить, если скрипт так уж хорош?

yuretsz
()
Ответ на: комментарий от JaM

>Ну, а чем /sbin/runscript отличается от /bin/sh? Или используется некоторый специальный язык, отличный от шелл?

Да, там встроенна поддержка всяких функций, которых в обычном шелле по умолчанию нет, но поддержка которых нужна для загрузочных скриптов.

Например гентушные загрузочные скрипты поддерживают проверку зависимостей между сервисами

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

> а представьте раздражение когда нужный файл в автодополнении пропускается потому что в скрипте не прописано что приложение умеет его открывать...
> Причем вариант добавить тип не всегда то , что на самом деле нужно...


да, я изредка испытываю такое одномоментное раздражение (скормить тому же mplayer'у *.dat или *.bin ), но его хватает ровно на столько чтобы
дописать расширене в скрипт. Благо скрипт лежит в юзерспейсе. Касательно файлов без расширений, я написал выше как я справляюсь с этим, потому как пока не придумал более эфективный метод. Буду рад советам.

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

> Откуда они знают? Что внутри ~/to_iso/Epidemica/ кино лежит, а не просто так папаочка. Шайтанство, не иначе. Я уж не говорю про бегло глянуть готовое iso перед нарезкой, так ли всё, как планировалось.

ты меня потерял. Я не уверен что мы не говорим разных вещах.

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

> Отредактировать скрипт было не комильфо? ;)

а как именно его отредактировать чтоб он автодополнял файлы с любым расширением? То есть какой смысл полсле этого в автокомплишине? В моем случае такая ситуация возникает раз в пятилетку, потому дальнейшую дискуссию считаю безсмыленной. Преимущества использования для меня лично намного выше.

firsttimeuser ★★★★★
()

> Казалось бы, а что можно еще сделать в интерпретаторе командной строки?

Да bash ещё пилить и пилить. До zsh ему ещё очень далеко.

FENix
()
Ответ на: комментарий от Sylvia

> а скрипты тоже все начинаются с #!/bin/zsh

мои, да

FENix
()
Ответ на: комментарий от yuretsz

>Да будь там хоть перл, хоть Ruby тебе то что? Это же всего-лишь системные скрипты.

Мне-то то, что для всего лишь системных скриптов, которые должны работать везде, нужно будет ставить перл или руби или тот же баш, а системы разные бывают, и даже такие, в которых баша нет. И там эти самые всего лишь системные скрипты просто напросто не заработают. А кому такие скрипты нужны?

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

>Мне-то то, что для всего лишь системных скриптов, которые должны работать везде, нужно будет ставить перл или руби или тот же баш, а системы разные бывают, и даже такие, в которых баша нет. И там эти самые всего лишь системные скрипты просто напросто не заработают. А кому такие скрипты нужны?

Где ты видел системные скрипты, которые будут "работать везде", на РАЗНЫХ системах? Или ты туго соображаешь, что такое "системные скрипты"?

Led ★★★☆☆
()
Ответ на: комментарий от Sylvia

>а сделайте
>rm -f /bin/bash


>тогда узнаете зачем :)


Во FreeBSD bash глубоко вторичен (ставится из порта и не нужен для работы самой системы).

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

>а как именно его отредактировать чтоб он автодополнял файлы с любым расширением?

В man bash: complete-filename(M-/)

Оно?

Devix
()

Странное название у вашего клавиатурного тренажёра - bash! :)

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

i=0
while test $i -lt $NCYCLE
do
some_shit
i=`expr $i + 1`
done

зато переносимо

val-amart ★★★★★
()
Ответ на: комментарий от madcore

> Какая разница, если почти во всех дистрах sh это симлинк на bash?
ты прикинь, у меня из ~250 компьютеров так только на двух рхелах, одном дебе и одном арче. на остальных баша либо нет вообще, либо он /bin/bash

val-amart ★★★★★
()
Ответ на: комментарий от shty

>>>Ну все, ОН стучится в двери !
>>дедушка?...

>Bash 4, который заменит Bash 3 !..

новенькие, штоле? вендокапец же //КО

val-amart ★★★★★
()
Ответ на: комментарий от firsttimeuser

> тоже бывает иногда, с левыми расширениями. Но я наловчился "ls этот_файл", а потом в начало строки и быстренько команду на нужную сменить. Руками вбивать не надо

$ ls dump.sql.bz2 fstab
dump.sql.bz2
fstab
$ echo !*
echo dump.sql.bz2 fstab
dump.sql.bz2 fstab

man bash /HISTORY EXPANSION

val-amart ★★★★★
()

> Во FreeBSD bash глубоко вторичен (ставится из порта и не нужен для работы самой системы).

жесть

kto_tama ★★★★★
()

Интересные всё-таки люди эти разработчики BASH. В Shell-скриптинг с незапамятных времён просто-таки напрашиваются хэш-массивы ну минимум на уровне не хуже AWK. Но реализация сего функционала, видимо, есть архисложная задача, поскольку как было это вездесущее eval проклятием BASH-а, так и остаётся по сей день. По сути если бы на большинстве UNIX-систем по умолчанию был zsh, этот чудо-bash забросили бы уже в угол, как страшный сон...

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

>>считается что /bin/sh это bash с его возможностями по brace expansion и т п

bash должен работать в compability mode когда запускается как /bin/sh. Чтобы пользовать все его фичи надо запускать именно /bin/bash.

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

>>for ((i=0; i<$NCYCLE; i++)) 
>>do 
>>some_shit 
>>done 
>>Изобразите на шелле. Особенно славно, когда такие фишки десятками... :(

#!/bin/sh

i=0
while [ $i != 10 ]
do
    echo $i
    i=`expr $i + 1`
done

alex_custov ★★★★★
()

Поставил dash в Дебиане, система стала работать в разы быстрее, сам пользую zsh, думаю выкинуть bash из системы, надо только переписать пару скриптов.

Чем, кстати, можно заменить $RANDOM в dash?

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

>А никто не знает как можно Portage и BASH прикрутить к win32?

Ущербным (работающим в win32) нормальные инструменты противопоказаны - MSOffice+VBA достаточно:)

Led ★★★☆☆
()
Ответ на: комментарий от Dimanc

>Чем, кстати, можно заменить $RANDOM в dash?

/dev/random + od + head, tail, cut, sed, и т.п. (в завимости от того, что требуется получить)

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