エイリアスを機能させるためにターミナルを開くたびに.bashrcを読み込む必要があるのはなぜですか?[複製]


25

この行を~/.bashrcファイルに追加しました。

alias myserver='ssh davidfaux@davidfaux.com'

ただし、ターミナルを開いて実行するとmyserver、ターミナルは

-bash: myserver: command not found

ただし、.bashrcファイルをソースにすると(. .bashrc)、エイリアスは機能します。

それにもかかわらず、エイリアスを機能させるためにターミナルを開くたびにファイルを取得したくありません。どうすればそれを実現できますか?


3
このコメントは、この理由を説明しています。その質問はそれを修正する方法を教えてくれます。
— ughoavgfhw

どうもありがとう!シェルを起動すると、これらのファイルが順番に実行されることは知りませんでした。確かに、作品に追加. .bashrcし.bash_profileます。
— デビッドフェイク

@ughoavgfhwはコメントを回答に変更できますか、または変更すべきですか?そうすれば、回答としてマークできます。
— ソックスマン

回答:


25

つまり、エイリアスを間違ったファイル.bashrcに配置しているため、新しいログイン端末インスタンスでエイリアスを機能させるためにソースを実行し続ける必要があります。

なぜ.bashrcが自動的に実行されないのかについてのChris Johnsenのコメントから?

デフォルトでは、ターミナルは/ usr / bin / loginを介してシェルを起動します。これにより、シェルがログインシェルになります。すべてのプラットフォーム(Mac OS Xだけでなく)で、bashはログインシェルに.bashrcを使用しません(/ etc / profileと、存在し読み取り可能な.bash_profile、.bash_login、.profileの最初のもののみ)。これが「.bash_profileにsource〜/ .bashrcを置く」が標準的なアドバイスである理由です。

詳細については、次のマニュアルページを参照してくださいbash。

man bash

次に、「呼び出し」セクションの下を見てください。


動作させるために再起動する必要がありますか?私は追加するのでsource ~/.bashrc、私の.bash_profileに、私はまだ...同じ問題に直面しています
— ミシェル

1
ほとんどの場合、変更を有効にするために新しいターミナルウィンドウを開くだけで、変更は新しく開いたウィンドウでのみ有効になります。
— MrDaniel 14年

11

あなたはいつも置くことができます

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

ファイル~/.profileまたは~/.bash_profileMac上で私は思う。

または、自分のものを.profileまたはに入れることができます.bash_profile。


これは他の回答で指摘されています-なぜこれらのことについて確信がありませんか?
— user151019

このよく似た質問:apple.stackexchange.com/q/12993/22003を読んで、改善点を追加してください。
— ダン14

@danielAzuelos待機; 他のページにコメントしたり、他の質問に基づいて回答を更新したりしますか?
— ディラン14

@Mark私は非常に仮説的な意味で考えていました-もし誰かの端末プロセスが.profileをソースすることを知らなかったらどうなるのでしょうか?端末はおそらく最初から起動しませんが、それでも可能です。...誰かが/ usr / bin / loginなどでハッキングしている場合のように。
— ディラン14

→Dylan:非常によく似た質問apple.stackexchange.com/q/12993/22003を読んでください。「たぶん?」に対する答えが見つかります。
— ダン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.