
OSX のターミナル アプリにログインすると、デフォルトのシェルは になります/bin/bash
。 と入力するとecho $HISTFILE
が表示され/Users/monkeybrain/.bash_history
、head $(echo $HISTFILE)
ファイルに履歴エントリが含まれていることが示されます。
その後、zsh
シェルを切り替えるために と入力すると、奇妙なことがいくつか起こります。まず、プロンプトが変わっても (新しいシェルにいるように見えますが)、$SHELL
環境変数は を指したままです/bin/bash
。$HISTFILE
変数は現在空で、 のようなファイルは存在しません。また、またはを使用してコマンド ラインを移動すること~/.zsh_history
もできません。Ctrl-A
Ctrl-E
ここで何が起こっているのですか?
どうもありがとう、
メガバイト
答え1
環境
SHELL
変数は通常シェルによって変更されません。通常は現在のユーザーのログインシェルへのフルパスが含まれます。ない現在実行中のシェル。ほとんどの場合、SHELL
シェルが起動する前に設定する必要があります。zsh
の値を変更せずSHELL
、bash
が設定されていない場合はログイン シェルに戻しますSHELL
。デフォルトでは
HISTFILE
は設定されていませんzsh
。履歴を保存する場合は、そのために使用したいファイルに設定する必要があります。HISTFILE="${HOME}/.zsh_history"
また、保存する行数を
SAVEHIST
指定するために正の整数値を設定する必要があり、デフォルトは(ありがとうzsh
HISTFILE
0
モンキーブレインヒントについては を参照してください)。また、HISTSIZE
シェル セッションで利用できる履歴の行数を示す も発生させたい場合があります。デフォルトは のみです30
。例:HISTSIZE=2000 SAVEHIST=2000
これは通常、構成ファイルで行われます
~/.zshrc
。zsh
EDITOR
は、環境変数と をチェックしてキーバインド設定を推測しようとしますVISUAL
。どちらかに文字列 "vi" が含まれている場合、入力モードzsh
が使用されます。このモードでは、 +も+ もデフォルトでバインドされていません。入力モード ( のデフォルト)を使用する場合は、次のコマンドを実行するだけです。viins
CtrlACtrlEemacs
bash
bindkey -e
これは、
~/.zshrc
全体的に、zsh
デフォルト設定で実行しているようです。まだない場合は~/.zshrc
、作成して必要な設定を追加するだけです。