red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
~/.zshenv
~/.zshrc.local ${DIR} - путь где лежит папка со скриптами (fns)в терминале всё прекрасно работает как в основном так и в дочерних процессах, а вот в скриптах не хочет точнее, если запускать так работаета вот так уже не хочет, и вместо вывода функций в скрипте выдаёт - command not foundкак правильно приготовить autoload функции для своих скриптов ? ------------------------------------------------------------------------- Решение: вместо ~/.zshrc.local использовать ~/.zshenv или /etc/zsh/zshenv |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Я не специалист по zsh, но в стандартном шелле точка означает исполнение фрагмента кода (то, что нужно для подключения функций из него) , а простой вызов по имени запускает отдельный скрипт в отдельном процессе, и разумеется, никакие функции из него после завершения доступны не будут. |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
source (она же и точка) позволяет выполнять команды скрипта в контексте текущего экземпляра (процесса) интерпретатора, без этого скрипт выполняется в дочернем процессе.Natrioмне не нужно из него мне нужно в самом скрипте и его дочерних процессах. для ясности приведу пример имеем простую функцию ${DIR}/fns/func1
~/.zshenv и ~/.zshrc.local аналогичны первому посту имеем, к примеру, такой скрипт в котором должна запускаться наша ф-я func1 script.sh
пробуем запускать напрямую в нашем интерпретаторе
теперь запускаем нашу функцию через скрипт Первый вариант
Второй вариант
надо заметить если в наш скрипт добавить то что мы добавляли в .zshrc.local, а конкретно в нашем случае autoload -U func1 то всё прекрасно выводится, но это не очень хороший вариант так как предполагается наличие множество ф-й которые запускаются (часть из них) во многих дочерних процессах(скриптах). как заставить нормально экспортироваться autoload ф-и для скриптов ? |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
попробуй прописать в ~/.zshenv
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Не работает у вас именно "в дочерних процессах". Когда вы запускаете новый интерактивный экземпляр шелла, он не наследует функции, а заново загружает их из того же конфига. Когда вы запускаете скрипт, он всегда запускается в новом процессе, а поскольку этот процесс не интерактивный, он не читает ваш конфиг и не загружает ваши функции. Чтобы функции загружались для не интерактивного шелла (скрипта), вам нужно найти такой конфиг, который будет читаться в любом случае, или изменить процедуру начальной конфигурации шелла так, чтобы он всегда загружал ваши функции. Как это делается в zsh – вопрос к специалистам по нему. |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
nafanja... Natrio, спасибо, я примерно догадывался что интерактивный (командная строка интерпретатора zsh) и не интерактивный (скрипты) режим немного разные вещи, и что собака зарыта именно в начальной инициализации, а примеры для интерактивного режима (мне по сути он и не нужен) я привёл чтобы показать общую работоспособность задачи. давайте тогда поправлю вопрос: как правильно инициализировать автозагрузку ф-й для скриптов средствами zsh ? |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
nafanjanafanja, большое спасибо, так всё отлично работает правда, на сколько это Ъ не знаю, так как рекомендуют там хранить только переменные, но главное что работает ) у меня глюки или изначально твой пост был другой, про .zlogin ? |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
redда, я сначала не в тему написал, потом поправил.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
чуть внимательней почитал нашу вики Autostarting applications
так что таки да, zshenv наше всё |