新しいターミナルウィンドウをロードするときに、PHPパスを正しく機能させるために、~/.profile
をソースする必要があるという問題があります。
私の問題の本質は、ターミナルがデフォルトの代わりにMAMP PHPとMySQLを使用するようにすることです。
パスがマップされていますが、新しいウィンドウを開くたびに、コマンドを使用する必要があります
source ~/.profile
Mac OSXが登録/ソーシング/ [ここに正しい用語を挿入] .profile
を行わない理由はありますか? .bash_profile
は.profile
を上書きすることを読みましたが、PHPパスは.bash_profile
でも定義されています。
各ファイルの内容は次のとおりです。
.bash_profile
の内容:
export PATH="$PATH:/Users/[username]/bin:/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql"
.profile
の内容:
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH"
.bash_profile
(機能する)と比較して、.profile
(機能しない)に設定したものの論理的な順序を見ると、答えは明らかだと思います。
これがあなたの.bash_profile
です:
export PATH="$PATH:/Users/[username]/bin:/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql"
そしてここにあなたの.profile
があります:
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH"
これを解決するための鍵は、デフォルトの$PATH
と比較して、新しいMAMP関連アイテムをどこに設定しているかを確認することです。シェルが(重要なこと)ユーザー検索パスのリストで最初に見つけたアイテムに作用するため、注文はカウントされます。
あなたがこのように見ている行動を分解できることを知っている:
.profile
バージョンでは、$MAMP_PHP
を変数として設定し、prependingを$PATH
のbeginning。.bash_profile
バージョンでは、あなたはappendingこのようなものafter$PATH
::/Applications/MAMP/bin/php/php5.5.14/bin:/Applications/MAMP/bin/mysql
だから私はそれが機能するように.bash_profile
をこのように作り直します:
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_PHP:$PATH:/Users/[username]/bin"
$MAMP_PHP
から.profile
規則をどのように使用しているかに注意してください。これは、人間の目のパスを論理的に分離するための優れた方法です。また、わからないため、その値を/Applications/MAMP/bin/php/php5.5.14/bin
に設定する方法にも注意してください。このMySQLパスが使用される場合:/Applications/MAMP/bin/mysql
。
MAMPバージョン2.1.3を使用している私の見地からすると、設定したパスに実際のmysql
バイナリが表示されません。従来、これは他のMAMPコアバイナリとともに/Applications/MAMP/Library/bin/
ディレクトリにあります。したがって、.bash_profile
は次のように調整する必要があります。
export MAMP_BIN=/Applications/MAMP/Library/bin
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_BIN:$MAMP_PHP:$PATH:/Users/[username]/bin"
また、その/Users/[username]/bin
は扱いにくく、私には具体的すぎるようです。ユーザーディレクトリ固有の~/bin
ディレクトリを管理している場合は、次のように~/bin
に設定することをお勧めします。
export MAMP_BIN=/Applications/MAMP/Library/bin
export MAMP_PHP=/Applications/MAMP/bin/php/php5.5.14/bin
export PATH="$MAMP_BIN:$MAMP_PHP:$PATH":~/bin
最後の"
部分の前後に二重引用符(:~/bin
)がないことに注意してください。これにより、~/
をユーザーのホームディレクトリに適切に展開できます。そうすれば、ユーザーが.bash_profile
ディレクトリを持っている任意のユーザーアカウントで、このような~/bin
セットアップをきれいに使用できます。
Bashは、ホームディレクトリで.bash_profile
、.bash_login
、および.profile
をこの順序で検索します。次に、bashは最初に見つけたものを実行し、検索を停止します。
したがって、解決策は、.profile
の最後に.bash_profile
をソースするか、より簡単に、.profile
の最後にある.bash_profile
の両方の行をコピーすることです。 _。
nix FAQ(OS Xの場合) では次のようになります。
Bashスタートアップファイル
「ログインシェル」が起動すると、ファイル「/ etc/profile」を読み取り、次に「〜/ .bash_profile」または「〜/ .bash_login」または「〜/ .profile」を読み取ります(どちらが存在する場合でも、これらの1つのみを読み取り、記載されている順序でチェックします)。
「非ログインシェル」が起動すると、ファイル「/ etc/bashrc」を読み取り、次にファイル「〜/ .bashrc」を読み取ります。
「sh」という名前でbashが呼び出されると、Bourne Shell(「sh」)の起動シーケンスを模倣しようとすることに注意してください。特に、 "sh"として呼び出された非ログインシェルは、デフォルトではドットファイルを読み取りません。詳細については、bashのmanページを参照してください。
したがって、すでに~/.bash_profile
を実行している場合、ファイル~/.profile
はbashによって自動的に読み取られないため、~/.bash_profile
に次の行を追加してロードできます。
# Load user profile file
if [ -f ~/.profile ]; then
. ~/.profile
fi