【问题标题】:Correct .bash_profile in OSX在 OSX 中更正 .bash_profile
【发布时间】:2015-01-17 01:24:10
【问题描述】:

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

为了更具体地说明我的问题,我需要这些行可以很好地协同工作,而无需根据我需要使用的工具取消注释和注释:

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 :/Users/chema/sdk-android/sdk/platform-tools:/Users/chema/sdk-android/sdk$:/Users/chema/sdk-android/sdk/tools:/Users/chema/sdk-android/ sdk/平台工具

echo PATH 当 PHP Artisan 正常工作而 Cordova 不工作时:

/Applications/XAMPP/xamppfiles/bin:/Users/chema/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users /chema/sdk-android/sdk/platform-tools:/Users/chema/sdk-android/sdk$:/Users/chema/sdk-android/sdk/tools:/Users/chema/sdk-android/sdk/platform -工具

哪个 xcodebuild /usr/bin/xcodebuild

谢谢!!

【问题讨论】:

  • 而不是 PATH=${PATH}:... 尝试做:export PATH=$PATH:...
  • @sircapsalot 这会有什么不同?
  • 谁知道...我对 bash 还是有点陌生​​,让我休息一下 :) 只是提供一个潜在的解决方案。因此为什么我没有给出答案
  • @sircapsalot 很好。 { } 字符可用于分隔环境变量引用;所以你可以做类似echo ${HOME}hello 的事情,echo $HOMEhello 显然会失败。另一方面,() 字符则不同。
  • 嗨!我已经更新了我的问题;)

标签: macos .bash-profile


【解决方案1】:

经过一番挖掘后确定。我想我已经弄清楚了

正在发生的事情是,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 初始化代码 /etc/profile、/etc/zshenv 等运行的。并设置基本路径

根据您对 head 仍然是 /Applications/XAMPP/xamppfiles/bin 中的注释的评论,这行 export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin 似乎没有被执行,或者 /Applications/XAMPP/xamppfiles/bin 已经在其他地方的 PATH 中(即您一直在寻找您的 . bashrc 之类的,而不是创建一个新的 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 并查看它是否有效。

【讨论】:

  • 好的,我稍后再测试,在家里!! ;)
  • 对不起@Doon,它不工作...... :(我创造了一个赏金......谢谢
  • 上面的错误信息是什么? which head 显示什么
  • 这是我的头:/Applications/XAMPP/xamppfiles/bin/head
  • 你能告诉我更多关于创建一个包装脚本来运行cordova的细节吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2016-01-03
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多