Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: alias в сценарии bash  (Прочитано 1221 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 027

  • Автор темы
  • Участник
  • *
  • Сообщений: 122
  • Cinnamon
    • Просмотр профиля
alias в сценарии bash
« : 19 Марта 2022, 13:37:38 »
Вопрос можно счесть академическим, если бы не склероз. :) Опять забыл про эту засаду, попытался использовать в наспех написанном скрипте алиас alert после долгой конвертации видео ffmpeg'ом, а оно не работает.

(Нажмите, чтобы показать/скрыть)

Причина-то понятна:
Цитата: man bash
Aliases  are  not  expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

Но — прямо тут же и подсказано лекарство:
Цитата: man bash
... unless the expand_aliases shell option is set using shopt

Не работает.

Ок, пробую добавить алиас прямо в этом скрипте после установки опции expand_aliases. Этот алиас работает, а прописаннные в .bashrc — нет.

В интернетах находится множество советов добавить sourse ~/.bashrc, что выглядит разумным (повторно назначить прописанные там определения алиасов). Но тоже не работает.

Это лыжи не едут, или я... гм... с особенностями?

#!/bin/bash
shopt -s expand_aliases
source ~/.bashrc

echo "Просмотр alias 1:"
alias # не выводит ничего
echo

alias ls_test="ls -l"
echo "Просмотр alias 2:"
alias # выводит один алиас «ls_test»

echo; echo "Запуск ls_test:"
ls_test # работает

echo; echo "Запуск alert:"
alert "Шо за нафиг?" # не работает

Вывод:
$ ./test.sh
Просмотр alias 1:

Просмотр alias 2:
alias ls_test='ls -l'

Запуск ls_test:
итого 4
-rwxrwxr-x 1 onotole onotole 395 мар 19 13:00 test.sh

Запуск alert:
./test.sh: строка 17: alert: команда не найдена

То есть, совет из man bash — установить опцию — как бы правильный, но на вставленный через source код не распространяется. Таки лыжи не едут? При таком поведении опция выглядит полностью бессмысленной.
Если бы было достаточно man bash, не было бы ABS.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6902
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #1 : 19 Марта 2022, 14:17:28 »
Цитировать
И хочется получать уведомление об окончании.
027, с алиасами ты сам разберешься, я об уведомлении.

Оффлайн 027

  • Автор темы
  • Участник
  • *
  • Сообщений: 122
  • Cinnamon
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #2 : 19 Марта 2022, 14:24:04 »
andytux, вот как раз с уведомлениями я разобрался. :) Использую notify-send, yad и zenity, а по-быстрому в консоли алиас alert, который есть искаропки.
Но за скриптик спасибо.
« Последнее редактирование: 19 Марта 2022, 14:27:54 от 027 »
Если бы было достаточно man bash, не было бы ABS.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6902
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #3 : 19 Марта 2022, 14:27:53 »
С ключем "--notify" он использует notify-send.

Оффлайн 027

  • Автор темы
  • Участник
  • *
  • Сообщений: 122
  • Cinnamon
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #4 : 19 Марта 2022, 14:29:13 »
andytux, я уже увидел, спасибо.
Если бы было достаточно man bash, не было бы ABS.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6734
  • 20% Cooler
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #5 : 19 Марта 2022, 16:23:41 »
bash --version
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн 027

  • Автор темы
  • Участник
  • *
  • Сообщений: 122
  • Cinnamon
    • Просмотр профиля
Re: alias в сценарии bash
« Ответ #6 : 19 Марта 2022, 16:28:10 »
ALiEN175
$ bash --version
GNU bash, версия 5.0.17(1)-release (x86_64-pc-linux-gnu)

$ apt policy bash
bash:
  Установлен: 5.0-6ubuntu1.1
  Кандидат:   5.0-6ubuntu1.1
  Таблица версий:
 *** 5.0-6ubuntu1.1 500
        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     5.0-6ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

UPD.
Вспомнил об одном старом сервере, на нем
bash --version
GNU bash, версия 4.3.48(1)-release (x86_64-pc-linux-gnu)

В точности такое же поведение.
« Последнее редактирование: 20 Марта 2022, 04:41:22 от 027 »
Если бы было достаточно man bash, не было бы ABS.

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.