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

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

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

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 
  • какие инструменты я могу использовать, чтобы быстро показать / скрыть некоторые напоминания о себе?
  • Как определить псевдоним для неинтерактивной / недействительной оболочки?
  • Как передать аргументы команде 'source'?
  • Имеет ли tcsh эквивалент «$ {a: -b}» для назначения переменной по умолчанию, например Bash?
  • вызов функции Bash из определения псевдонима
  • Zsh - псевдоним с параметром
  • Почему в команде bash отсутствуют псевдонимы?
  • Есть ли способ сделать расширение псевдонимов внутри, если ... fi на Bash?
  • Команда bash - aliased - использовать оригинальную команду?
  • почему завершение не работает для всех псевдонимов?
  • Псевдонимы для программ в / sbin /
  • проблема с псевдонимом интерпретируется в аргументах команды
  • Interesting Posts

    Альтернативы для команды lsof?

    Проблема с беспроводным интерфейсом Broadcom 4360 PCI-ID 14e4: 43a0

    Почему загрузка в меню режима спасения ничего не делает?

    `find -delete` Erased Everything

    Клавиатура не работает, когда требуется ввести пароль для зашифрованного корня

    24gb удалены, но никаких изменений в доступном пространстве нет. Что могло случиться?

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

    Как предотвратить обновление tzdata при сбросе CentOS / etc / localtime

    как преобразовать открытый ключ с открытым кодом 64 (.pem) в bytearray?

    Запуск локальных скриптов на нескольких серверах с использованием пользователя sudo через скрипт

    Основные шаги по разработке API-интерфейса python в среде Unix

    Бинарная совместимость между Mac OS X и Linux

    Является ли таблица файлов в файловой системе или в памяти?

    yum Ошибка: нет модуля с именем site

    Избавиться от * ~ файлов в редакторах KDE

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