Я обычно работаю с Notepad2, весь текст, который я копирую с сети, вставляется тут же снова использованный, который позволяет мне чистить его (от формата и делать модификации).
Функция export -f
специфична для Bash:
parent
#!/bin/bash
plus1 () { echo $(($1 + 1)); }
echo $(plus1 8)
export -f plus1
./child 14 21
child
#!/bin/bash
echo $(plus1 $(($1 * $2)) )
Если вы создаете подоболочки с помощью ()
, то они унаследуют моментальный снимок всех определений, параметров и переменных оболочки.
Если вы выполняете их как программы, тогда вы можете поместить определения в .bashrc
.
Если вы пытаетесь подделать существующий скрипт для выполнения оболочки или подстановки для команды PATH, тогда .bashrc
будет работать в зависимости от по деталям исполнения. В противном случае вы можете вместо этого выполнить сценарий оболочки, который просто выполняет .
или источник
включаемого файла, который определяет функции, а затем делает то же самое со сценарием оболочки с заменяемыми командами.
Сценарий оболочки может выглядеть примерно так:
Если вы используете ksh или zsh:
, вы можете использовать переменную окружения FPATH
, куда можно поместить все ваши функции.
Если FPATH
установлен на интерактивном интерпретаторе, а команда или функция не найдена в текущем окружении оболочки или PATH
, то в перечисленных там каталогах производится поиск на предмет существования файла, названного в честь пропущенной команды. Если он найден, то он исходит из текущего окружения оболочки, и ожидается, что он определит функцию.
Таким образом, вы можете поместить все свои функции в FPATH
, и дочерние скрипты также смогут его найти.
Вы можете использовать команду autoload
в скриптах оболочки для загрузки требуемых функций:
autoload fun_a fun_b
В zsh, для работы FPATH
требуется autoload
. В ksh
и его близких родственниках, я считаю, что это просто заставляет функции, определенные в FPATH
, переопределять обычную команду в вашем PATH, как это было бы, если бы они были определены напрямую.
Некоторые подробности по FPATH
и автозагрузке
: