Определите функции для нескольких оболочек

Я в настоящее время использую оболочку рыбы. Поскольку я часто использую fish, zsh, bash, как я мог определить функцию в одном из них, которые будут доступны для всей оболочки? Сделайте я должен определить их в .profile?

enter image description here

После того как я оставляю терминал и снова использую его после, я добрался:

enter image description here

3
задан 25 November 2016 в 19:00

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

6
ответ дан 1 December 2019 в 15:23

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

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