LINUX.ORG.RU

инициализация оболочки zsh


0

0

Имеем шелл zsh.
/etc/zprofile является симлинком на /etc/profile
Ещё есть скрипт /etc/profile.d/mc.sh с содержанием alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
Если вызвать просто скрипт, то почему-то ничего не происходит, а если вызвать непосредственно саму команду, то она выполняется.
Что я недосмотрел?

★★★★★

Да, под root'om всё работает. Не работает под обычными пользователями.

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

>Если вызвать просто скрипт, то почему-то ничего не происходит, а если
>вызвать непосредственно саму команду, то она выполняется. 

Скорее всего, скрипт выполняется в отдельном процессе, поэтому не
создается алиас mc='. /usr/share/mc/bin/mc-wrapper.sh'

в /etc/profile примерно такой код:

for i in /etc/profile.d/*.sh; do
    . $i # вызов скрипта в контексте текущего процесса
done

>Не работает под обычными пользователями

/etc/zprofile выполняется для login-шелла, возможно что zsh вызывается из эмулятора терминала, который запускает zsh без флага -l

anonymous
()
Ответ на: комментарий от anonymous

> /etc/zprofile выполняется для login-шелла, возможно что zsh вызывается из эмулятора терминала, который запускает zsh без флага -l
думал об этом, т.к. под рутом захожу именно su -l.
Подскажи, пожалуйста, может здесь винавот xterm?
То как тогда это вылечить?

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

Пролистав лист рассылки, быстро нашёл решение:
~/.zshenv:
if [[ $SHLVL == 1 && ! -o LOGIN ]]; then
    source ~/.zprofile
fi

UVV ★★★★★
() автор топика
Ответ на: комментарий от ananas

Вот за это спасибо! ;-)

UVV ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.