在OSX中更正.bash_profile

时间:2014-11-19 13:41:46

标签: macos .bash-profile

我需要使用一些工具,但是当我尝试在Laravel和Cordova中使用PHP Artisan时遇到一些问题,我需要注释一些行,因为$ PATH不能正常工作。我是一个使用Unix的noob:)

在我的问题中更具体一点,我需要这些线路可以很好地协同工作,而不需要根据我需要使用的工具取消注释和注释:

export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
export PATH=~/.composer/vendor/bin:$PATH

我取消评论每个错误时的错误:

  

案例1: Cordova只能在Xcode 4.6或更高版本中运行。

     

案例2:需要Mcrypt PHP扩展。

编辑:我添加了完整的bash配置文件:

# The next line updates PATH for the Google Cloud SDK.
source /Users/chema/google-cloud-sdk/path.bash.inc
# The next line enables bash completion for gcloud.
source /Users/chema/google-cloud-sdk/completion.bash.inc

#Comment this line make Cordova works fine
#export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
export PATH=${PATH}:/Users/chema/sdk-android/sdk/platform-tools:/Users/chema/sd$
#Comment this line make PHP Artisan with Laravel works fine
export PATH=~/.composer/vendor/bin:$PATH
export ANDROID_HOME=/Users/chema/sdk-android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

如果我取消注释这两行,只需使用PHP Artisan Laravel。

echo PATH 当Cordova工作时,PHP Artisan没有:

xcodebuild / usr / bin / xcodebuild

  

/Users/chema/.composer/vendor/bin:/Users/chema/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin :/用户/ CHEMA / SDK-的Android / SDK /平台的工具:/用户/ CHEMA / SDK-的Android / SDK $:/用户/ CHEMA / SDK-的Android / SDK /工具:/用户/ CHEMA / SDK-的Android / sdk / platform-tools

echo PATH 当PHP Artisan工作时,Cordova没有:

  

/应用/ XAMPP / xamppfiles / bin中:/用户/ CHEMA /谷歌云-SDK / bin中:在/ usr / local / bin中:在/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录:/用户/ CHEMA / SDK-的Android / SDK /平台的工具:/用户/ CHEMA / SDK-的Android / SDK $:/用户/ CHEMA / SDK-的Android / SDK /工具:/用户/ CHEMA / SDK-的Android / SDK /平台-tools

xcodebuild / usr / bin / xcodebuild

谢谢!

1 个答案:

答案 0 :(得分:2)

经过一番挖掘后好了。我想我已经弄明白了

正在发生的事情是,Cordova需要的head命令通常存在于OSX上的/usr/bin/head中,而XAMPP提供的版本却忽略了这一命令。因此需要调整路径顺序。取消注释XAMPP时which head可能会给您/Applications/XAMPP/xamppfiles/bin/head而不是/usr/bin/head

这就是说尝试如下所示。

export ANDROID_HOME=/Users/chema/sdk-android/sdk
export PATH=~/.composer/vendor/bin:$PATH
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin

这应该将xampp版本的head放在路径的末尾。但这可能会导致其他名称冲突导致XAMPP无法正常工作(我没有安装,因此无法测试)(同时删除了export PATH=${PATH}:/Users/chema/sdk-android/sdk/platform-tools:/Users/chema/sd$,它会在您的路径中添加看似冗余/错误路径的内容)

如果这仍然不起作用,最好的办法是创建一个运行cordova的包装器脚本,将路径设置为你知道的路径,然后只传递命令行选项

- 编辑 -

OSX路径上的

是由path_helper构建的,它构建了/etc/paths&&的路径。 /etc/manpaths这是从你运行shell init /etc/profile/etc/zshenv等运行的。并设置了基本路径

根据你对/Applications/XAMPP/xamppfiles/bin中的那个人的评论,看来这行export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin要么没有被执行,要么/Applications/XAMPP/xamppfiles/bin已经在其他地方的PATH中了(你继续寻找你的.bashrc之类的IE,而不是创建一个新的shell等。)

试试这个。将以下内容放入reset_paths.sh

#!/bin/sh
export PATH=
if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi
PATH=~/.composer/vendor/bin:$PATH
PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
export PATH

这将做的是重置你的路径,执行path_helper来设置来自操作系统的路径,然后坚持下去,所以我们开始新鲜..

然后在你的shell中执行source ./reset_paths.sh

然后尝试从该shell运行Cordova并查看它是否有效。