起こっていることは、FreeBSDとLinuxはデフォルトで異なるシェルを使用しているということです。FreeBSDのデフォルトはtcshであり、これは過去のbashよりも優れたインタラクティブ機能を備えていました(しかしbashは追いついています)が、スクリプト機能は著しく劣っています。
慣れている環境を取得する最も簡単な方法は、Linuxでシェルをtcshに切り替えることです。tcshがシステム全体にインストールされている場合(インストールされていない場合は、システム管理者にインストールを依頼してください)、実行chsh -s tcsh
してデフォルトのシェルを変更します。
または、bashをセットアップして、このコマンドを使い慣れたものにすることができます。デフォルトではUp、Down矢印と矢印は、入力したプレフィックスで始まるコマンドだけでなく、履歴内のすべてのコマンド間を移動します。これを以前の動作に変更するには.bashrc
、ホームディレクトリにあるbashの初期化ファイルに次の行を追加します。. ~/.bashrc
新しいシェルを実行または開始して、初期化ファイルを再読み取りします。
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
エスケープシーケンスは、矢印キーを押したときに端末がシェルに送信するものです。Upかもしれ\eOA
(エスケープ、O
、A
)、または\e[A
お使いの端末に応じて、同様のためDown。
デフォルトでは、bashはコマンド履歴を検索するためのさまざまなキーバインディングを提供します。Ctrl+ を押してRから、いくつかの文字を入力して、行の任意の場所でこの部分文字列を含むコマンドを検索できます。後方ではなく前方に進むには、Ctrl+ Sを押します。検索はインクリメンタル(つまり、入力どおり)です。Alt+ PおよびAlt+ Nは、非増分検索を提供します。
bashとtcshの代わりに、zshに切り替えることができます。zshには、他のシェルにはない優れた機能がいくつかあります。Zshには、デフォルトでbashと同じようにCtrl+ Rと
Ctrl+ Sがあります。取得するUpとDown、あなたがtcshの中に持っていたように、以下の行を置きます~/.zshrc
:
bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward
どこでも同じシェルを使用したい場合は、ポートがインストールされていれば、FreeBSDでもbashまたはzshを使用できます(もう一度、システム管理者に問い合わせてください)。