なぜこれが起こるのですか?
MacOSとUbuntuは、bashのコマンド履歴の重複を処理するために、デフォルトで異なる構成になっています。これらの構成は、いわゆる「ドットファイル」に格納されます。これらは〜/ .bash *およびシステム全体の/ etc / profileの形式を取ります。これらのファイルはすべて好みに合わせてカスタマイズでき、対話型シェル、ログインシェル、リモートシェルなどを区別できます。これらのファイルは特定の順序で読み取られ、特定の機能を提供します。
macOSで同じ動作を取得する方法は?
「コマンドラインの正確な重複を無視する」というこの1つだけのカスタマイズが必要な場合は、Allanの答えのようなものを使用できます。たとえば、bash_profileファイルに1行を追加します。「適切な方法」はありませんが、無数のオプションがあります。
これがbashの唯一のカスタマイズではない場合、これは最良のオプションではない可能性があります。
その他の注意事項:
- グラフィカルアプリケーションまたはsh(またはshとして起動されるbash)が使用できるはずのすべてのものは〜/ .profileになければなりません
- 〜/ .bashrcは何も出力してはいけません
- ログインシェルのみが利用できるようにする必要があるものはすべて〜/ .profileに入れる必要があります
- 〜/ .bash_loginが存在しないことを確認してください。
つまり、物事がより複雑になった場合、カスタマイズを複数のファイルに分散することをお勧めします。それぞれのファイルは、コンテンツに特化され、高度に順序付けられています。
exports
監視を簡素化するために、すべてが独自のファイルに存在する場合があります。
ユーザーディレクトリのルートでbashによって読み取られるファイルを作成します。たとえば、次の.exports
ものが含まれます。
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
インタラクティブな起動時にファイルがbashによって読み取られるように、これを「ソース」にする必要があります。
ファイルのソース
シェル構成が多数ある場合は、それらをいくつかのサブファイルに分割し、組み込みのソースを使用して.bashrc:から追加source ~/.exports
してロードすることができます。
または、ロードする前にファイルが実際に存在することを確認する
if [ -f ~/.exports ]; then
. ~/.exports
fi
コマンド. ~/.exports
は~/.exports
、現在実行中のシェルのコンテキストでソースします。
これはエイリアスを追加する場合に特に便利です。別のファイルを使用すると、変更を加えたときにエイリアスを簡単に再ロードできます。
zsh
さらにさまざまなスクリプトでzshをカスタマイズすることも可能です。