.bash_profile のエイリアスは機能しません

.bash_profile のエイリアスは機能しません

ディレクトリの変更を容易にするために、.bash_login に cd blah blah コマンドをエイリアスとして追加しました。正常に動作していましたが、突然、エイリアスがどれも動作しなくなりました。コマンドが見つからないというメッセージが表示されます。なぜ突然動作しなくなったのか、まったくわかりません。何か提案はありますか?(システムを再起動しました)

申し訳ありませんが、実際には.bash_loginと書くつもりでした

答え1

エイリアスはエクスポートされません。つまり、あるシェルで定義されたエイリアスは、子シェルによって継承される環境の一部ではありません。したがって、エイリアスを定義する最適な場所は、~/.bash_profile や ~/.profile ではなく、~/.bashrc です。前者はすべての対話型シェルによってソース化されますが、後者の 2 つはログイン シェルによってのみソース化されるためです。

答え2

シェルのコマンドを使用して、aliasそれらが本当に作成されているかどうかを確認してください。また、Mac Terminal.app プログラムのみを使用していますか? オプションのどこかに、ログイン シェルと呼ばれるものを使用するように構成できる設定があるはずです。これが .bash_profile ファイルのソースになります。

答え3

おそらく、起動時にシェルによって .bash_profile ファイルが読み込まれていないのでしょう。多くのディストリビューションでは、デフォルトの .bashrc に次のような内容が含まれています。

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

エイリアスとしてのみ使用する場合は、ファイルに ~/.bash_aliases という名前を付けることをお勧めします。

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

ファイルが存在するかどうかをチェックし、存在する場合はその中のコマンドを実行します。あなたの場合は、エイリアス コマンドです。これを .bashrc に挿入すれば、問題は解決するはずです。

編集:実際はそれよりも少し複雑です。私の解決策はうまくいくでしょうが、これは読む価値があります.bash_profile と .bashrc

PS *nix システムで問題を解決するために再起動が必要になることはほとんどありません。せいぜいログアウトしてログインするだけです。

答え4

ディレクトリの変更を簡単にしたい場合は、次を参照してください$CDPATH

CDPATH The search path for the cd command.  This is a colon-separated list of
       directories in  which  the shell looks for destination directories
       specified by the cd command. A sample value is ".:~:/usr".

上記の例を使用して、プロフィールに次の内容を追加します。

CDPATH=.:~:/usr

そうすれば、どのディレクトリにいても、~またはの子ディレクトリに簡単にアクセスできます/usr

$ pwd
/var/log
$ cd bin
$ pwd
/usr/bin

関連情報