2013-08-23 20 views
22

私は、新しくインストールされたArch Linuxを実行しています。 (bashを実行している)ユーザーにログインし、.bashrcからエイリアスを使用しようとすると、「コマンドが見つかりません」というエラーが表示されます。しかし、私が 'bash'コマンドでbashに戻っても、コマンドは正常に動作します。実行中のbashコマンドまでbashrcがロードされない

はい、私は既にbashに入っています。当初

ENV:bashの実行後

SHELL=/usr/bin/bash 

ENV、それが残っています:

SHELL=/usr/bin/bash 

だから私は、問題がどこにあるかはかなりよく分かりません。

+0

使用するエイリアスは何ですか? – lulyon

+0

まあ、実際には関数です:function cl(){cd $ @; ls} –

+0

可能な複製:http://stackoverflow.com/a/415444/208997 – Simon

答えて

41

詳しくは、「bash(1)」の「INVOCATION」セクションを読んでください(これはbashのmanページです; man bashを使用してください)。ログイン時の最初のシェルは "ログインシェル"です。つまり、.bashrcファイルがソースになっていません。 2回目の呼び出しでは、対話シェルが作成されます。ここでは.bashrcがソースになります。

あなたは常にあなたの.bashrcファイルの内容を処理したい場合、それはまだ存在していない場合、あなたはそのファイルを作成し、あなたの.bash_profileファイルに次の行を追加することができます。そのmanページ毎の

if [ -f ~/.bashrc ]; then 
    . ~/.bashrc 
fi 

を、bashの"[...]は~/.bash_profile~/.bash_login~/.profileの順に検索し、存在していて読み取り可能な最初のコマンドからコマンドを読み込んで実行します。これらのファイルが存在する場合、それらのファイルが存在するかどうかは、ローカルシステムの規則とポリシーによって決定されます。注意の

単語:さらに、その後の行動を変える、あなたのホームディレクトリに新しい.bash_profileを作成すると、読み取りを防止し、既に存在.bash_loginまたは.profileファイル内のコマンドの実行の意図しない副作用を持っている可能性があることに注意してくださいログイン。

+4

そして、ここにまだなければ '〜/ .bash_login'ファイルを作成してください。 –

+2

またはBourne互換のログインシェルに '〜/ .profile'を使用してください。 (bash) – Qwerty

+1

@Qwerty:〜/ .bash_profileと〜/ .bash_loginが存在しない環境を維持している場合、〜/ .profileを使用して動作します。バージョン4.2のbashのmanページから: "bashが対話型ログインシェルとして、あるいは--loginオプション付きの非対話型シェルとして呼び出されると、まず/ etc/profileファイルからコマンドを読み込んで実行しますそのファイルを読んだら、〜/ .bash_profile、〜/ .bash_login、〜/ .profileをこの順番で探し、存在し、読み込み可能な最初のものからコマンドを読み込んで実行します。 – sjnarv

5

~/.profile,~/.bash_loginおよび~/.bash_profileファイルを見ましたか?

+2

この時点では存在しません –

+2

ありがとう、全く忘れました。 Ubuntuに感謝の気持ちを伝える必要はありません。 –

関連する問題