bashでpecoを使用しています。
.bash_profileに下記の設定をしています。(ネット検索で出てきたものをそのまま使ってます。
# peco設定 # 重複履歴を無視 export HISTCONTROL=ignoreboth:erasedups # historyに記憶するコマンド数 HISTSIZE=5000 # historyなどの履歴を保存しない HISTIGNORE="fg*:bg*:history*:h*" # historyに時間を追加 HISTTIMEFORMAT='%Y.%m.%d %T' peco_history() { declare l=$(HISTTIMEFORMAT= history | sort -k1,1nr | perl -ne 'BEGIN { my @lines = (); } s/^\s*\d+\s*//; $in=$_; if (!(grep {$in eq $_} @lines)) { push(@lines, $in); print $in; }' | peco --query "$READLINE_LINE") READLINE_LINE="$l" READLINE_POINT=${#l} } bind -x '"\C-r": peco_history'
ctrl + rに割り当てたpeco_history
は動作するのですが、履歴を選択してEnterキーを押下すると標準出力
として表示されず、実行できません。
1. ctrl + rでpeco_historyを実行 2. QUERY > docker rmi hoge # 履歴から使いたいコマンドを絞る 3. ENTRYキー押下 4. ~: # 本来ならここにdocker rmi hogeと表示されるはずだが、表示されない
現在使用しているmacのOSはCatalina10.15.4で最新です。
デフォルトのシェルは最新のOSだとzshになると思いますが、訳あってbashを使用したい形です。
同じような症状が出ている方はいないみたいで、解決方法が分からず投稿した次第です。
何か分かる方がいらっしゃいましたらコメント頂けると幸いです。
macOS Catalina 付属の /bin/bash では駄目でしたが、brew で入れた bash ではうまくいきましたよ。
情報ありがとうございます。
brewでbash入れて、そちらを使用するようにしましたが変わらずでした。
READLINE_LINE が bash 4 以降の機能で、OS 付属の bash は 3.2.57 と古すぎるようです。
brew で入れた bash のバージョンは? また、どうやって使ってますか?
brew install bashで入れたbashのバージョンは5.0.17でした。
iTerm2にて使用しています。
brewでbashを入れた後which bashで/usr/local/bin/bashが表示されたので、付属のbashは使っていないと思います。
ログインシェルは /bin/bash などのフルパスで指定されています。/usr/local/bin/bash をインストールしただけではログインシェルは変わりませんよ。ログインシェルを /usr/local/bin/bash にするか、iTerm2 だけで使えればいいならログインシェルはそのままで iTerm2 の設定から起動シェルを /usr/local/bin/bash に変更する方法もあります。
https://rcmdnk.com/blog/2015/05/25/computer-mac-bash-zsh/
ありがとうございます!
ログインシェルは設定しないとダメなんですね。
chsh -s /usr/local/bin/bashをして、ログインシェルを変更したらpecoが期待通りの動きになりました!
本当にありがとうございますm(_ _)m
回答2件
あなたの回答
tips
プレビュー