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

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

date1(){ date -d @$1 } 

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

 $ date1 xxxyyy 

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

 $ source file 

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

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

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] чтобы получить ввод из командной строки.

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

  • Как сохранить данные, данные для функции на стандартном входе?
  • Передавать аргументы для функции точно как-есть
  • Функция, вызывающая другую функцию со списком аргументов, не работает
  • Как получить функции, распространяемые на подоболочку?
  • Символы имени действительной функции Shell
  • Сценарий для отправки почты с использованием функции
  • $ * переменная функции zsh приводит к неожиданным результатам
  • Как сделать функцию доступной для команды `parallel` (GNU)?
  • Bash псевдоним с пространством в составе команды
  • Можете ли вы выполнить функцию Bash с помощью команды `at`?
  • Позиционные параметры вызывающего абонента функции
  • Bash: помогает оттачивать пользовательскую функцию
  • Interesting Posts

    Совместное использование соединений socks5 со второй системой сетевого адаптера

    Как обновить Gentoo, чтобы использовать последние версии всего установленного программного обеспечения, в том числе с пустыми ключевыми словами?

    Почему команда killall убивает только один экземпляр процесса?

    Попытался переместить файл с помощью команды mv и теперь он потерян?

    Как я могу определить, является ли мой GPU узким местом?

    Пакет Debian не устанавливает элементы в / usr / src?

    Ошибка ловушки yaourt: не удалось подключиться к серверу

    mysql database dump script добавляет fuctionality для пропуска сбрасываемой базы данных

    Количество байтов «ls -l <случайный файл>» по сравнению с «wc -c <random file>»

    Числовая сортировка файлов

    Как сделать заголовок в XFCE больше?

    Настройка сетевого принтера для архивирования заданий на печать

    Можно ли выбрать, на каком X будет отображаться экземпляр программы?

    Найти команду, возвращающую неверные данные

    Что означают цвета в iptstate?

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