Выполнение функций файла оболочки на Mac - PullRequest
1 голос
/ 28 мая 2020

У меня есть следующий файл оболочки, который содержит это:

sh
nightlyTag() {
    echo $1-alpha.$(date +%Y%m%d).$(($(date +%s%N)/1000000))
}

yarnPubCanaryVersion() {
    if [ -z "$1" ]
    then
        echo "No version argument supplied, maybe you meant v1.0.0?"
        return 1
    fi
    version=`nightlyTag $1`
    yarn version --new-version $version --no-git-tag-version
    npm publish --tag canary
    git reset --hard HEAD
}

Я делаю файл исполняемым с помощью chmod +x canary.sh, затем запускаю его, выполняя ./canary.sh, затем мой терминал меняется на sh-3.2$, затем я попробуйте запустить функции в терминале, как это nightlyTag, и я получаю

sh: nightlyTag: команда не найдена

То же самое для yarnPubCanaryVersion.

Я смотрел на этот ТАК вопрос

1 Ответ

2 голосов
/ 28 мая 2020

Вы не сможете запускать функции из терминала после запуска скрипта.

Для этого вам необходимо создать скрипт:

source ./canary.sh

Или добавьте содержимое файла в .bashr c файл или его эквивалент, а затем его источник.

Исходная команда используется для загрузки любого файла функции в текущую оболочку.

Теперь, когда вы вызовите эти функции, вы получите ожидаемый результат.

В верхней части файла sh вам необходимо включить:

#! /path/to/bash 

путь к bash, который вы используете .

...