Я в настоящее время использую оболочку рыбы. Поскольку я часто использую fish
, zsh
, bash
, как я мог определить функцию в одном из них, которые будут доступны для всей оболочки? Сделайте я должен определить их в .profile
?
После того как я оставляю терминал и снова использую его после, я добрался:
Вы могли просто определить функцию в ~/.*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
в Ubuntu. Можно также проверить source
путем создания файла давайте назовем его file1
, с некоторой командой в нем как (для удара) PS1='I messed up my prompt '
сохраните, выйдите, затем в типе оболочки source file1
и Вы будете видеть, эффект (откройте новую оболочку (например, тип bash
или откройте новое окно терминала), и все вернется к нормальному)...