LINUX.ORG.RU

Странное ключевое слово line в Bash. Это что за?

 , line


1

1

Если редактировать Bash-скрипты в MC, то можно заметить, что если создать переменную с именем line, то она будет подсвечиваться совсем не так, как другие переменные:

  local fileName=$1 # <-- Эта переменная не подвечивается
  local line=$2 # <-- Здесь line подвечивается голубым цветом

Цвет подсветки совпадает с подсветкой команд, таких как echo или wc. Однако в системе нет утилиты line. И найти в гоголе и яндексе упоминания о такой утилите тоже невозможно. В репозитарии тоже ни одного пакета с утилитой line я не нашел. То есть, мне непонятно, почему MC как-то особенно отображает переменную с таким именем.

Но и это еще не все. Если посмотреть выхлоп скрипта, в котором включена отладка через команду set -xe, то можно увидеть, что механизм задания значения данных переменных отличается:
++ local fileName=/etc/bashrc
++ local 'line=/usr/bin/xset -dpms'

То есть, с переменной с имененм line явно что-то не так. Из-за этого лезут всякие дикие ошибки.

Но я не могу найти, почему в Bash именно переменная с именем line такая особая.

★★★★★

Во втором случае там просто пробел экранирован.

Насчет mc не знаю. Лучше по истории коммитов найти, кто вписал такое правило подсветки, и спросить у него напрямую.

wandrien ★★
()
line --help                                                                                                                                                                                                                                 

Использование:
 line [параметры]

Read one line.

Параметры:
 -h, --help     display this help
 -V, --version  display version

Для более детальной информации смотрите line(1).
Allakka ★★★★
()
Ответ на: комментарий от Xintrea
$  which line                                                                                                                                                                                                                                  
/usr/bin/line
$  rpm -qf /usr/bin/line                                                                                                                                                                                                                       
util-linux-2.33.1-lp152.5.3.1.x86_64

openSUSE 15.2

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

А блин, нашел

apt-file search 'line' | grep '\/line$'
util-linux: /usr/bin/line

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

Так это без local, с ним:

$ function f() { local line='/usr/bin/xset -dpms'; echo $line}
$ f
/usr/bin/xset -dpms
$ function f() { local 'line=/usr/bin/xset -dpms'; echo $line}
$ f
/usr/bin/xset -dpms
xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.