Как создать функцию на основе еще не определенных команд?

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

export SOME_VAR=/path/to/main/folder source $SOME_VAR/loading/stuff.sh --quiet loadApp1 loadApp2 loadApp3 loadApp4 

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

Я думаю, что это потому, что loadApps – это псевдонимы, загруженные в stuff.sh поэтому в момент, когда Bash анализирует мои функции, он еще не знает псевдонимы.

Как я могу сделать это с помощью одной команды без потери переносимости?

PS: Я не хочу копировать псевдоним в мой $HOME/.bashrc потому что их можно изменить в другом месте, и я его не увижу.

  • Как использовать переменную как часть имени массива
  • basename не работает должным образом
  • Как найти перекрытие двух строк в bash?
  • chown не работает через скрипт
  • cd в дочерний каталог символической ссылки не выполняется
  • Как перечислить файлы резервных копий, отсутствующие в соответствующих файлах?
  • Как передать файлы, найденные в качестве аргументов?
  • Использование grep в условном выражении в bash
  • 3 Solutions collect form web for “Как создать функцию на основе еще не определенных команд?”

    Если это псевдонимы, вам придется написать:

     myFunction() { export SOME_VAR=/path/to/main/folder . "$SOME_VAR/loading/stuff.sh" --quiet eval ' loadApp1 loadApp2 loadApp3 loadApp4' } 

    псевдонимы расширяются в момент их считывания / анализа. eval такой синтаксический анализ.

    Я бы использовал сценарий, чтобы сделать это, чтобы быть в безопасности:

     #!/usr/bin/env bash export SOME_VAR=/path/to/main/folder source $SOME_VAR/loading/stuff.sh --quiet loadApp1 loadApp2 loadApp3 loadApp4 

    Просто сохраните это в своем $PATH , сделайте его исполняемым и запустите его вместо своей функции.

    Нет проблемы с объявлением функции, содержащей неизвестные команды. Это не значит, что вы попытаетесь выполнить эту проблему.

     $ unknown() { foo; bar; baz; } $ unknown bash: foo: command not found bash: bar: command not found bash: baz: command not found 
    Interesting Posts

    XMobar-friendly предупреждение о низком заряде батареи?

    Маска ACL не работает должным образом

    whiptail и вызов внешних скриптов

    Как увеличить количество inodes в файловой системе ext4?

    Как установить Python на CentOS без привилегий root?

    Управление питанием дисплея в консоли

    Почему unrar не расширяет это выражение?

    Сделать звуковую карту видимой для нового пользователя

    Получение данных под или над строкой

    Когда исполняемые файлы не дублируются,

    USB-установка Linux Mint – отображается только как один раздел, но у меня закончилось свободное пространство

    И операция по 2 столбцам (даты доступа и mofidy) в файле в linux

    Работа с конфликтами GNU Stow

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

    Как добавить индивидуальные номера строк в файл

    Linux и Unix - лучшая ОС в мире.