В zsh есть способ отключить интерактивный режим (в частности, псевдонимы) внутри скрипта, который был получен в интерактивном режиме?Есть ли способ подавить интерактивный режим в zsh?
Например, если я определяю в foo.zsh
:
#!/bin/zsh
a ha
, а затем сделать
alias a=echo
./foo.zsh
Я получаю сообщение об ошибке, потому что псевдоним не применяется; но если у меня есть
. ./foo.zsh
Я получаю ha
.
Есть способ, в пределах foo.zsh
, чтобы отключить псевдоним a
, даже если он был получен с помощью .
?
Оболочка работает скрипт всегда неинтерактивная оболочка. Тем не менее, скрипт может получить доступ к его tty. Можно даже эмулировать интерактивную оболочку в скрипте - [источник] (http://www.tldp.org/LDP/abs/html/intandnonint.html). Из [этого ответа] (http://superuser.com/questions/46139/what-does-source-do) вы пытаетесь запустить скрипт * в текущей оболочке *, в то же время * не желая скрипт в текущей оболочке *. Использовать 'source' абсолютно необходимо? Что вы пытаетесь сделать (это учебное упражнение, или задача требует «источник»)? – simont
@simont Я использую [подсказку git-подсказки Себастьяна Селиса] (http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/), и каждый раз через некоторое время я разбиваю ее, определяя новую псевдоним в моем .zshrc. – Owen