Как добавить функцию в .bash_profile / .profile / bashrc в оболочке?

У меня есть функция, которая преобразует эпоху на сегодняшний день. Вот определение

date1(){ date -d @$1 } 

Я хотел бы иметь возможность написать:

 $ date1 xxxyyy 

Где xxxyyy – это параметр, который я передаю в свою функцию, чтобы получить соответствующую дату. Я понимаю, что я должен добавить его в .bash_profile , .profile или .bashrc а затем .bashrc его:

 $ source file 

Но я не уверен, в какой файл его вставить. В настоящее время у меня есть файл .profile . Но чтобы запустить его, я должен каждый раз выполнять source .profile .

В идеале, он должен сделать его доступным, когда компьютер запускается, как переменная среды.

  • Как разбить массив Bash на аргументы
  • Почему вы должны быть осторожны при использовании встроенной функции истории Bash для повторного запуска предыдущих команд, содержащих переменные?
  • Как сделать функцию доступной для команды `parallel` (GNU)?
  • Передавать аргументы для функции точно как-есть
  • Значение, назначенное внутри функциональной переменной, всегда пусто
  • Сценарий для отправки почты с использованием функции
  • Bash: передача фигурных скобок в качестве аргументов функции bash
  • Необязательные параметры в функции bash
  • 4 Solutions collect form web for “Как добавить функцию в .bash_profile / .profile / bashrc в оболочке?”

    От man bash :

    Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с параметром –login, она сначала считывает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в этом порядке и считывает и выполняет команды из первого, который существует и доступен для чтения.

    Другими словами, вы можете поместить его в любой из ~/.bash_profile , ~/.bash_login или ~/.profile или любой source файлов d любым из них . Обычно ~/.profile будет source ~/.bashrc , который является «личным файлом инициализации, выполняемым для систем входа».

    Чтобы включить его, либо запустите новую оболочку, запустите exec $SHELL либо запустите source ~/.bashrc .

    После того, как вы определите функцию в своем .profile , добавьте export -f date1 . Это будет экспортировать функцию для использования вашей оболочкой входа.

    Настройка для интерактивных оболочек переходит в ~/.bashrc . Вещи, которые вы хотите запустить при входе в систему, идут в ~/.profile (или ~/.bash_profile , но часто не загружаются при входе в систему графически).

    Поместите это определение функции в ~/.bashrc .

    Поскольку bash не загружает .bashrc когда это оболочка входа, заставьте это сделать: напишите ~/.bash_profile содержащий

     . ~/.profile case $- in *i*) . ~/.bashrc;; esac 

    т.е. load ~/.profile , а также load ~/.bashrc если оболочка является интерактивной.

    См. Альтернативу .bashrc и связанным там сообщениям.

    csh и tcsh не поддерживают такие функции, как bash, но вы можете это сделать.

    Например, вот простая функция для печати некоторого текста

     alias print_hello_world 'eval echo "hello world"' 

    передача аргументов скрипту

     repeate_after_me 'eval echo "$1"' 

    делать многострочный код, как оператор if, довольно сложно, но здесь вы идете.

     alias X 'eval "if (\!:1 =~ 'yes') then \\ echo yes \\ else \\ echo no \\ endif"' 

    вам все равно придется вычислять, но самая сложная часть выполняет синтаксис \!:[x] чтобы получить ввод из командной строки.

    Этого должно быть достаточно, чтобы вы разобрались.

    Linux и Unix - лучшая ОС в мире.