Выполнение псевдонимов скриптом завершается неудачно, в то время как ручное выполнение псевдонима выполняется без проблем [дубликат]

На этот вопрос уже есть ответ здесь:

Я выполнил удаленный сценарий Bash bash <( curl -s URL / script.sh | tr -d '\ r') , который выполняет следующие 3 действия:

  1. Загружает другой сценарий со списком псевдонимов ( aliases.sh ) в текущий реж.
  2. Выполняет команду source ./aliases.sh.
  3. Выполняет один из псевдонимов в списке после того, как их сценарий был получен.Это псевдоним rss , предназначенный для перезапуска службы веб-сервера.

По какой-то причине выполнение псевдонима сценарием всегда терпит неудачу, но ручное выполнение всегда завершается успешно.

Текущее состояние таково, что псевдоним rss (и все другие псевдонимы в списке фактически) будет игнорироваться и считаться «несуществующим» при выполнении script.sh даже хотя их файл aliases.sh является источником и выполнение rss и всех других псевдонимов завершается успешно, если я выполняю их вручную (набираю rss и нажимаю Enter).

Почему это «различение выполнения», когда выполнение псевдонима сценария не выполняется, а выполнение псевдонима вручную завершается успешно?

Я воспроизвел это в нескольких различных средах Ubuntu. Я не могу это объяснить и был бы признателен за ваше мнение.

0
задан 21 January 2018 в 22:13

2 ответа

При выполнении сценария оболочки "b" из сценария оболочки "a", весь набор псевдонимов и переменных в сценарии "b" только хорош для той среды оболочки, они не становятся пасуемыми назад к сценарию оболочки "a".

1
ответ дан 31 October 2019 в 03:52

Псевдонимы сделаны для интерактивного использования. В сценарии можно получить тот же результат (как Вы добираетесь от псевдонима) путем ввода соответствующей команды в сам сценарий.

Если Вы хотите использовать его несколько раз, можно создать функцию и назвать ее в сценарии.

Пример:

alias alidr='sudo lsblk -o model,name,size,fstype,label,mountpoint'

может быть заменен в сценарии удара с

function flidr {
 sudo lsblk -o model,name,size,fstype,label,mountpoint $*
}

и это можно назвать в сценарии с

flidr

или показать только указанные диски с параметрами

flidr /dev/sda /dev/sdb
1
ответ дан 31 October 2019 в 03:52

Другие вопросы по тегам:

Похожие вопросы: