Терминал не может распознать команды сценария оболочки

Репозитории debuginfoи sourceотключены (enabled=0), поэтому нет никакой разницы между изменением только репозитория epelили всех трех. Тем не менее, вам, вероятно, следует обновить все зеркальные списки / URL-адреса репозитория EPEL при обновлении одного из них на случай, если вам когда-нибудь понадобится включить какой-либо из этих репозиториев.

0
30.01.2020, 16:36
1 ответ

Если filename.shсодержит определение unload_proxy, то вам нужно использовать source./filename.shили ярлык ../filename.sh.

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

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

  1. создается новая оболочка bash с новой средой, которая для целей данного объяснения является более или менее копией текущей оболочки (, зависящей от определенных опций и способов определения вещей ).

  2. сценарий запускается внутри этой новой оболочки и определяет функции в своей среде.

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

  4. управление возвращается в исходную оболочку, в которой не определены никакие функции.

При запуске как source./filename.shновая оболочка не запускается, поэтому выполняется только шаг номер 2, и он выполняется в вашей текущей оболочке.

*при условии, что файл имеет правильный шебанг , например#!/usr/bin/env bash

2
28.04.2021, 23:25

Теги

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