Как использовать функции bash с рыбой - PullRequest
0 голосов
/ 10 июля 2019

У меня есть несколько функций bash, таких как

#!/bin/sh

git-ci() {
    ...
}

Когда я не использовал fish, у меня была строка source ~/.my_functions в моем ~/.bash_profile, но теперь она не работает.

Могу ли я использовать свои функции bash с рыбой?Или единственный способ - перевести их на рыбные, а затем сохранить их через funcsave xxx?

Ответы [ 2 ]

1 голос
/ 20 июля 2019

Как сказал @Barmer, рыба не заботится о совместимости, потому что одна из ее целей -

Sane Scripting

fish полностью поддерживает сценарии, а синтаксис простой, понятный и последовательный. Вы никогда не будете писать esac снова.

Рыболовы считают, что bash безумен, и я лично согласен.

Одна вещь, которую вы можете сделать, это хранить ваши функции bash в отдельных файлах и вызывать их как функции изнутри fish.

Пример:

До

#!/bin/bash

git-ci() {
    ...
}

some_other_function() {
    ...
}

* После 1018 *

#!/bin/bash
# file: git-ci

# Content of git-ci function here
#!/bin/bash
# file: some_other_function

# Content of some_other_function function here

Затем поместите ваши файлы сценариев где-нибудь на вашем пути. Теперь их можно звать из рыбы.

Надеюсь, это поможет.

1 голос
/ 10 июля 2019

Синтаксис для определения функций в fish очень отличается от оболочки POSIX и bash.

Функция POSIX:

hi () { 
    echo hello
}

переводится в:

function hi
    echo hello
end

Существуют и другие различия в синтаксисе сценариев.См. Раздел под названием Blocks in Fish - Дружественная интерактивная оболочка для примеров.

Так что в принципе невозможно использовать функции, написанные для bashв fish они отличаются от bash и csh.Вам придется пройти через все ваши функции и преобразовать их в синтаксис fish.

...