私はあなたがこれらの線に沿って何かを求めていると思います...未テスト
#! /bin/zsh -i
local HISTFILE
# -p push history list into a stack, and create a new list
# -a automatically pop the history list when exiting this scope...
HISTFILE=$HOME/.someOtherZshHistoryFile
fc -ap # read 'man zshbuiltins' entry for 'fc'
while IFS="" vared -p "input> " -c line; do
print -S $line # places $line (split by spaces) into the history list...
done
[編集]-i
最初の行
に追加した通知( #!
)。これは、シェルが対話モードで実行されている必要があることを示す方法にすぎません。これを実現する最善の方法は、単純に を使用してスクリプトを実行することです。これは、Linux と OSX ではコマンドzsh -i my-script.zsh
に引数を渡す方法が異なるため、原則として依存すべきではありません。#!
正直なところ、カスタム構成と (必要であれば) コマンド間のフックを使用して、新しい対話型シェルを開始してみませんか? これを実現する最善の方法は、異なる構成ファイルと新しい履歴を使用して新しいシェルを開始することです。
これは、これを行うためのはるかに優れた方法です。
mkdir ~/abc
echo "export HISTFILE=$HOME/.someOtherZshHistoryFile;autoload -U compinit; compinit" >! ~/abc/.zshrc
ZDOTDIR=~/abc/ zsh -i
その後、スクリプトの構成ファイルを変更して、必要な他のカスタマイズを実行できます (別の色のプロンプト、履歴の保存なしなど)。
ユーザー入力を実際に処理するには、によって処理される多くのフックの 1 つを使用する必要があります。add-zsh-hook