Определить функции для нескольких оболочек
1 ответ
Вы можете просто определить функцию в ~/.*rc
файл каждой из оболочек, которые вы используете. Или вы можете создать новый файл для этой функции и других функций оболочки, которые вы хотите использовать во всех оболочках... например...
nano shell-functions
Я определяю свою функцию внутри файла...
hi() { echo "How are you $1?" ; }
сохранить и выйти, затем я редактирую ~/.bashrc
а также ~/.zshrc
и в конце каждого из них добавьте строку:
source shell-functions
или просто
. shell-functions
Который делает то же самое.
После редактирования моего ~/.*rc
файлы, я открываю новую оболочку и функция доступна:
$ bash
$ hi zanna
how are you zanna ?
$ zsh
% hi zanna
how are you zanna ?
source
Команда читает файлы и выполняет команды от них в текущей оболочке (в отличие от запуска сценария, как ./script
который выполняет скрипт в новой оболочке). В этом случае вы хотите определить функцию для открываемой оболочки, поэтому вы хотите source
файл, который содержит его, чтобы сделать его доступным в оболочке. Если вы посмотрите в свой ~/.profile
Вы можете увидеть пример того, как один файл конфигурации использует другой, например:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
Так что по умолчанию ~/.profile
источники ~/.bashrc
в убунту. Вы также можете проверить source
сделав файл, давайте назовем его file1
, с какой-то командой в нем вроде (для bash) PS1='I messed up my prompt '
сохранить, выйти, затем в типе оболочки source file1
и вы увидите эффект (откройте новую оболочку (например, введите bash
или откройте новое окно терминала) и все вернется на круги своя)...