Desabilita a ferramenta de configuração no Zsh

5

Quando não há nenhum arquivo .zshrc no diretório pessoal de um usuário e zsh é iniciado, um utilitário de configuração interativo é executado em vez de dar acesso diretamente ao prompt do shell.

Eu configurei zsh para ser o shell padrão em meus sistemas Debian Wheezy. Portanto, todo usuário recém-criado recebe zsh como shell de login se eu não alterar isso manualmente. Além disso, há um padrão .zshrc em /etc/skel , portanto, todos os usuários regulares do meu sistema têm uma cópia do arquivo em seu diretório pessoal. Este não é o caso para usuários do sistema.

Quando eu mudo para um usuário do sistema (por exemplo, o usuário de um daemon de rede específico) por meio de sudo ou sh , corro para a ferramenta de configuração, porque esses usuários não têm .zshrc em seus diretórios base.

Não parece certo colocar um .zshrc no diretório inicial de cada daemon, o que também seria difícil de configurar e manter em muitos sistemas. Mas eu ainda não gostaria de fazer o downgrade para um bash menos confortável para esses usuários.

Existe uma maneira de desativar a ferramenta de configuração zsh sem ter que criar um arquivo .zshrc no diretório pessoal do usuário? Além disso, uma maneira de configurar um único arquivo para ser o padrão de todo o sistema .zshrc para todos os usuários que não possuem um seria muito bom também.

    
por aef 07.12.2012 / 20:03

1 resposta

4

de: link

The shell then executes code in the file
scripts/newuser in the shared library area (by default
/usr/local/share/zsh/<VERSION>/scripts/newuser).  This feature can be
turned off simply by removing this script.  The module can be removed
entirely from the configured shell by editing the line starting
"name=zsh/newuser" in the config.modules file, which is generated in the
top level distribution directory during configuration: change the line to
include "link=no auto=no".

e /etc/zsh/zshrc são originados por todos os shell que possuem interactive , rcs , & globalrc opções definidas. (o que a maioria dos processos zsh interativos fazem)

ou adicione zsh-newuser-install() { :; } em /etc/zsh/zshenv Que tem o efeito colateral óbvio de os usuários não poderem usar a função até que eles não definam a sua.

Você pode refinar isso adicionando um teste do UID.

if (( EUID < 1000 )) && (( EUID != 0 )); then # or whatever the highest daemon uid on your system
  zsh-newuser-install() { :; }
fi
    
por 07.12.2012 / 21:44