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

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

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 потому что их можно изменить в другом месте, и я его не увижу.

  • Использовать команды под каталогом только для интерактивного использования?
  • проблема с псевдонимом интерпретируется в аргументах команды
  • су и смешение алиасов
  • Аргументы псевдонимов Bash
  • Команда bash - aliased - использовать оригинальную команду?
  • Как сделать псевдоним постоянным?
  • Как добавить псевдоним системы?
  • Что происходит с аргументом в псевдониме после его использования один раз?
  • 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

    Как я могу понять, что мешает монтированию привязки отключиться?

    Как вставить содержимое файла в другой файл перед шаблоном (маркером)?

    pip не найдет системный пакет в настраиваемом месте

    Помощь, необходимая для понимания сообщения об ошибках ZFS (в Linux)

    Как дать пользователю такую ​​возможность, как root с visudo?

    В виртуальной виртуальной машине как установить права доступа к файловой системе?

    строка и числовое сравнение в bash в тестовых утверждениях?

    Понимание управляющего терминала

    Установите WorkDirectory, используя переменную

    Сортировка данных более быстрый подход

    Сценарий APCUPSD не может закрыть программу

    Почему записи terminfo не соответствуют требованиям?

    Linux – журнал о том, какое имя пользователя и пароль были опробованы

    Восстановить образ диска от установки без рейда до RAID1

    Поиск профессионального инструмента для редактирования видео

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