Где я могу поместить пользовательскую функцию оболочки?

Я планирую создать функцию, которая упростит для меня вещи. Функция будет что-то вроде

function lazymode()
{
echo "Hello World!";
}

, так что, когда я использую команду lazymode в оболочке, она выведет Hello World!.

Какой файл я должен поставить пользовательская функция?

1
задан 1 February 2016 в 13:20

1 ответ

Наилучшим выбором будет файл ~/.bashrc.

Вы можете либо написать свои определения функций оболочки непосредственно в файле ~/.bashrc, либо, если у вас их много, и вы не хотите загромождайте свой ~/.bashrc файл, вы можете поместить их все в другой файл по вашему выбору - просто обязательно отправьте этот файл в свой ~/.bashrc файл. Например, если файл с вашими функциями называется bash_functions, просто добавьте в свой файл ~/.bashrc строки:

if [[ -f /path/to/bash_functions ]]; then
    source /path/to/bash_functions
fi

или, что эквивалентно:

if [[ -f /path/to/bash_functions ]]; then
    . /path/to/bash_functions
fi

где . является просто символическим представлением source. Тест if гарантирует, что файл /path/to/bash_functions существует до попытки его источника.

Этот метод очень похож на создание псевдонимов в ~/.bashrc, создав файл с именем ~/.bash_aliases и используя аналогичный синтаксис для этого выше в ~/.bashrc, чтобы проверить его существование, а затем исправить его.

3
ответ дан 24 May 2018 в 18:02
  • 1
    спасибо, это сработало. кстати, в чем его отличие от .profile? в некоторых Linux, я не могу поместить функции в bashrc – Abel Melquiades Callejo 12 September 2013 в 13:15
  • 2
    Файл ~/.profile выполняется интерпретатором команд для систем входа. Когда вы используете графический интерфейс и вы открываете терминал, этот файл не выполняется, потому что вы будете находиться в недействительной оболочке. – Radu Rădeanu 12 September 2013 в 13:18

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

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