Zshで設定ツールを無効にする

Zshで設定ツールを無効にする

.zshrcユーザーのホームディレクトリにファイルなしで起動すると、zshシェルプロンプトに直接アクセスを許可するのではなく、対話型設定ユーティリティが実行されます。

私はこれをzshDebian Wheezyシステムのデフォルトシェルに設定しました。したがって、zsh手動で変更しないと、新しく作成されたすべてのユーザーにログインシェルがあります。.zshrcもデフォルトがあるので、/etc/skel私のシステムのすべての一般ユーザーはホームディレクトリにファイルのコピーを持っています。システムユーザーには該当しません。

sudoshシステムユーザー(たとえば、特定のネットワークデーモンのユーザー)を渡したり変更したりすると、そのユーザーのホームディレクトリで利用できない設定ツールが実行されます。.zshrc

各デーモンのホームディレクトリに入れるのは正しいとは思わず、.zshrc多くのシステムで設定してメンテナンスするのも痛いでしょう。しかし、私はまだbashこれらのユーザーにとってあまり快適なバージョンにダウングレードしたくありません。

ユーザーのホームディレクトリにファイルを作成せずに設定ツールを無効にする方法はありますかzsh?さらに、.zshrc単一のファイルをシステム全体のデフォルトに設定する方法は、ファイルを持たないすべてのユーザーに最適です。.zshrc

答え1

から:http://www.zsh.org/mla/users/2007/msg00398.html

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".

そして、&オプションが設定されているすべてのシェルから取得されます/etc/zsh/zshrc。 (ほとんどの対話型zshプロセスはこれを行います)interactivercsglobalrc


または、定義されないまでユーザーが関数を使用できないという明白な副作用を持つzsh-newuser-install() { :; }関数を追加します。/etc/zsh/zshenv

UIDテストを追加してこれを最適化できます。

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

関連情報