我遇到一个问题,当我加载新的终端窗口时,我必须获取源代码~/.profile
才能使我的 PHP 路径正常工作。
本质上,我的问题是让终端使用 MAMP PHP 和 MySQL 而不是默认的。
我已经规划好了路径,但每次打开新窗口时,我都必须使用命令
source ~/.profile
是否有原因导致 Mac OS X 无法注册/获取/[在此处插入正确术语] .profile
?我读到过.bash_profile
将覆盖,但 PHP 路径也在.profile
中定义。.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"
答案1
我相信,当您将所设置的.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"
解决这个问题的关键是查看与默认值相比,您设置的新 MAMP 相关项目的位置$PATH
;顺序很重要,因为 shell 将对其采取行动(关键事项)它在用户搜索路径列表中找到的第一个项目。
知道你可以分解你所看到的行为如下:
- 在
.profile
您设置$MAMP_PHP
为变量的版本中,然后前置它到开始的$PATH
。 - 但在
.bash_profile
版本中你是追加这东西后$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
在您设置的路径中看到实际的二进制文件。传统上,它会/Applications/MAMP/Library/bin/
与其他 MAMP 核心二进制文件一起位于目录中。所以也许您.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
。
答案2
Bash 在您的主目录中按顺序查找.bash_profile
、.bash_login
和。然后 bash 将运行它找到的第一个文件并停止查找。.profile
因此,对于您来说,一个解决方案可以是.profile
在您的 末尾获取您的.bash_profile
,或者更简单地,在您.profile
的 末尾复制两行.bash_profile
。
答案3
在Unix 常见问题解答 (适用于 OS X)我们可以读到:
Bash 启动文件
当“登录 shell”启动时,它会读取文件“/etc/profile”,然后读取“~/.bash_profile”或“~/.bash_login”或“~/.profile”(无论哪一个存在 - 它只读取其中一个,按照所述顺序检查它们)。
当“非登录 shell”启动时,它会读取文件“/etc/bashrc”,然后读取文件“~/.bashrc”。
请注意,当使用名称“sh”调用 bash 时,它会尝试模仿 Bourne shell(“sh”)的启动顺序。具体来说,默认情况下,以“sh”调用的非登录 shell 不会读取任何点文件。详细信息请参阅 bash 手册页。
因此,如果您已经~/.bash_profile
,该文件~/.profile
将不会被 bash 自动读取,因此您可以在中添加以下几行~/.bash_profile
来加载它:
# Load user profile file
if [ -f ~/.profile ]; then
. ~/.profile
fi