Пользовательские функции
Обычно функции bash постоянно хранятся в bashстартовом скрипте.
- Общесистемные сценарии запуска:
/etc/profileдля оболочек входа в систему и /etc/bashrcдля интерактивных оболочек.
- Пользователь определяет сценарии запуска:
~/.bash_profileдля оболочек входа в систему и ~/.bashrcдля интерактивных оболочек.
- Более подробную информацию об интерактивных оболочках / оболочках для входа в систему можно найти на
manстранице bash в разделе INVOCATION.
Определяемые пользователем функции оболочки загружаются динамически в хэш (или таблицу поиска) при запуске bash. Из исходного файла bash variable.cопределение для таблицы:
/* The list of shell functions that the user has created, or that came from
the environment. */
HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
Пользовательские функции могут быть перечислены с помощью declareкоманды bash , другие оболочки все еще используют typeset. В bash declareвышла typesetкоманда.
declare -f
Функции существуют в памяти в течение всего времени жизни оболочки bash.
Определенные (встроенные) функции оболочки
Эти общие функции , такие как echo, printf, cdи :. Они скомпилированы в библиотеку, которая связана с bashисполняемым файлом. Встраивание определений в исполняемый файл экономит время по сравнению с загрузкой внешнего определения. Определения для этих функций (хранятся в .defисходных файлах, которые анализируются в C-источнике) содержатся в builtinsкаталоге исходного кода bash.
Полезное в стороне: для информации по использованию встроенной команды оболочки help <command>. например
help # list all builtins
help declare # info and options for declare
help -m declare # gives man style information for declare
cd is a shell builtin. Взгляните на страницу руководства для вашей оболочки (zsh?)