私が使用すると
alias ls='ls -F'
mac OS Xの.bashrc内では、新しく作成されたシェルにはそのエイリアスがありません。 bash
をもう一度入力する必要があり、そのエイリアスが有効になります。
ホスティング会社のLinuxにログインすると、.bashrc
ファイルには、次のようなコメント行があります。
非ログインシェルの場合
そしてその .bash_profile
ファイルにはコメントがあります
ログインシェル用
それでは、エイリアスはどこに書かれるべきですか?ログインシェルと非ログインシェルを分離する方法を教えてください。
一部のウェブページでは、.bash_aliases
が、Mac OS Xでは動作しないようです。
loginとnon-login Shellを分離する理由は、Bashの新しいコピーを開始するたびに.bashrc
ファイルがリロードされるためです。 .profile
ファイルは、ログインするか、適切なフラグを使用してログインシェルとして動作するようにBashに指示した場合にのみロードされます。
個人的に、
PATH
セットアップを.profile
ファイルに配置しました(他のシェルを使用することがあるため)。.bashrc
ファイルに入れました。これを入れます
#!/bin/bash
#
# CRM .bash_profile Time-stamp: "2008-12-07 19:42"
#
# echo "Loading ${HOME}/.bash_profile"
source ~/.profile # get my PATH setup
source ~/.bashrc # get my Bash aliases
.bash_profile
ファイル内。
ああ、新しいエイリアスを取得するためにbash
を再度入力する必要があるのは、Bashが起動時に.bashrc
ファイルをロードするが、指示がない限りリロードしないためです。次のように入力することで、.bashrc
ファイルをリロードできます(2番目のシェルは不要です)。
source ~/.bashrc
.bashrc
ファイルを、Bashに直接コマンドを入力したかのようにロードします。
man bash
以外のトピックに関する優れたリソースについては、 http://mywiki.wooledge.org/DotFiles を参照してください。
概要:
~/.bash_profile
または~/.profile
が読み取られて実行されるときです。ログインシェルから実行するものはすべてログインシェルの環境を継承するため、すべての環境変数をそこに配置する必要があります。 LESS
、PATH
、MANPATH
、LC_*
、...などの例については、以下を参照してください: My .profile
~/.bashrc
や/.profile
ではなく、~/.bash_profile
のみを実行します。このため、はbashにのみ適用されるすべてを定義します。それは、関数、エイリアス、HISTSIZEのようなbash専用の変数です(これは環境変数ではないので、エクスポートしないでください!)、Shell options with set
およびshopt
など。例については、以下を参照してください: My .bashrc
~/.bashrc
を実行せず、~/.profile
または~/.bash_profile
のみを実行するため、後者から手動でソースする必要があります。 ~/.profile
でも同じことができます:source ~/.bashrc
。Bashのマンページから:
Bashが対話型ログインシェルとして、または
--login
オプション付きの非対話型シェルとして呼び出されると、bashは、ファイルが存在する場合、最初にファイル/etc/profile
からコマンドを読み取り、実行します。そのファイルを読み取った後、~/.bash_profile
、~/.bash_login
、および~/.profile
をこの順序で探し、存在し、読み取り可能な最初のコマンドからコマンドを読み取り、実行します。--noprofile
オプションは、この動作を禁止するためにシェルを開始するときに使用できます。ログインシェルが終了すると、bashはファイル
~/.bash_logout
(存在する場合)からコマンドを読み取り、実行します。ログインシェルではないインタラクティブシェルが開始されると、bashは
~/.bashrc
からコマンドを読み取り、実行します(そのファイルが存在する場合)。これは、--norc
オプションを使用することで禁止できます。--rcfile
ファイルオプションは、bashが~/.bashrc
の代わりにファイルからコマンドを強制的に読み取り、実行するようにします。
したがって、ログインシェルと非ログインインタラクティブシェルの両方で同じ動作を取得したい場合は、すべてのコマンドを.bashrc
または.bash_profile
のいずれかに入れてから、他のファイルを用意する必要があります- source 最初のもの。
.bash_profile
は、「ログインシェル」用にロードされます。 OS Xではどうなるかはわかりませんが、LinuxではX11または仮想端末のどちらかです。
.bashrc
は、Bashを実行するたびにロードされます。新しいTerminal.appウィンドウを開くたびに、ロードしたいものを置くべき場所です。
私は個人的にすべてを.bashrc
これにより、変更を有効にするためにアプリケーションを再起動する必要がなくなります。