ksh
または を実行すると、mksh
上矢印は何もしません。
$ ksh
$ ^[[A^[[A^[[A^[[A^[[A
bash
しかし、起動しbash
、上矢印を押すと動作します。
$ bash
developer@1604:~$ ssh [email protected] -p 2223
ksh または mksh を起動すると、履歴はありません。 $HISTFILE変数も設定しましたが、新しいシェルを起動しても記録はありません。
どうですか? Kornシェルはセッション間の記録を覚えていませんが、bashシェルは覚えていることは本当ですか?
Kornシェルが好きで、より良い、より広範な記録が必要な場合は、kshを介してこの機能を使用できますか?
ベストアンサー1
いいえ、これは本当ではありません。
ファイル名の場合、$HISTFILE
そのファイルにセッション履歴が保存されます。これはマニュアルに記載されています。シェル履歴に記憶されるコマンドの数は値によって制限されます$HISTSIZE
。
bash
私はシェルセッションの終わりではなく、各コマンドの後に履歴がファイルにフラッシュされると思います。これはksh
使用する実装によって異なります。
HISTFILE
ファイルのファイル名~/.profile
(ログインシェルから読み取る)または指定ファイル$ENV
(対話型シェルから読み込み、デフォルトは$HOME/.kshrc
)ksh93
のファイル名に設定します。デフォルトは、$HISTSIZE
使用している実装に応じて500、512、またはそれに似ています。ksh
これらの変数はエクスポートする必要はありません。これを行う前に履歴ファイルが存在する必要はありません。
コメントでは、特定のEmacsの移動キーとコマンドライン編集キーが機能しないと述べました。これは、シェルがEmacs編集モードにないためです。変数EDITOR
(またはVISUAL
)をに設定するか、Emacsコマンドライン編集モードを有効にするためにemacs
使用します。set -o emacs
これはマニュアルにも記載されています。これらの変数は、シェル以外のプログラムで使用したい場合以外はエクスポートする必要はありません。
要約:
ファイルから$HOME/.profile
:
export ENV="$HOME/.kshrc"
ファイルから$HOME/.kshrc
:
HISTFILE="$HOME/.ksh_history"
HISTSIZE=5000
export VISUAL="emacs"
export EDITOR="$VISUAL"
set -o emacs
これはOpenBSDおよびksh93
(pdksh
OpenBSDで)を使用してksh
徹底的にテストされました。私はそれを使用しませんが、派生物であるmksh
ため、pdksh
これはそのシェルでも機能すると思います。
ノートそれと(pdksh
そして)ksh93
bash
履歴ファイルを共有できません。歴史的形式が異なるからです。
bash
for および for ( with in )ksh
のように、および の初期化ファイルを分離した場合、通常は問題になりません。 (一般的に)を見ると、さまざまな実装をより差別化できます。.bash_profile
.bashrc
bash
.profile
.kshrc
ksh
export ENV="$HOME/.kshrc"
.profile
ksh
$KSH_VERSION