Intereting Posts

Как экспортировать функцию, определенную eval?

Определите динамическую функцию, выполнив ее в командной строке:

eval "ab() { echo test; }" 

Он запускает и печатает тест.

Поместите тот же оператор в скрипт test.sh а затем выполните скрипт. Ничего не произошло. Функция не определяется.

Я предполагаю, что это потому, что функция определяется внутри скрипта, но не вне его. Поэтому я пытаюсь добавить в скрипт:

 export -f ab 

Но это не сработает. Как экспортировать функции из сценария в оболочку?

Вы не можете экспортировать функцию или переменную в родительскую оболочку, вы можете экспортировать ее только в оболочку, запускающую скрипт или дочерние оболочки.

Чтобы сценарий изменил среду вашей текущей оболочки, вам нужно запустить сценарий с помощью source или . , например, вместо запуска ./myscript.sh , вы запустите . ./myscript.sh . ./myscript.sh

Это говорит о том, что ваша текущая оболочка запускает сам скрипт, а не порождает под-оболочку для ее запуска … и, таким образом, позволяет сценарию изменять текущую среду.