我想你問這些方針的東西...... 未經檢驗
#! /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
第一行(#!
)。這只是一種表明shell必須以交互模式運行的方式。達到此目的的最佳方式是 只需執行腳本zsh -i my-script.zsh
,因爲在Linux和OSX之間傳遞參數到#!
命令不同,所以它原則上是不應該依賴的。
老實說,你爲什麼不直接用一些自定義配置啓動一個新的交互式shell,並且(如果有必要)在命令之間掛鉤?實現這一目標的最好方法很可能就是使用不同的配置文件啓動一個新的shell,創建一個新的歷史記錄。
這是一個更好的方法來做到這一點:
mkdir ~/abc
echo "export HISTFILE=$HOME/.someOtherZshHistoryFile;autoload -U compinit; compinit" >! ~/abc/.zshrc
ZDOTDIR=~/abc/ zsh -i
然後你可以改變腳本的配置文件來執行你需要的任何其他自定義(不同顏色的提示,節省沒有歷史等)。
要真正做的事情與用戶輸入時,應使用處理的許多掛鉤的一個由add-zsh-hook
感謝您的回答! 'setopt interactive'不起作用。 – nachocab
確實不起作用。一旦shell啓動並運行,該標誌就不能設置。我對劇本做了一些小小的修改。無論如何,你真的應該只是使用一個普通的交互式shell,沒有配置文件 – Francisco
嗯,它仍然不起作用(我在OSX上,當我使用箭頭鍵時,我聽到一聲嘟嘟聲)。我沒有將它作爲新shell運行的原因是因爲這僅僅是一個玩具的例子。實際的腳本通過用戶輸入來做其他事情。 – nachocab