2014-11-24 110 views
-1

我在安装Homebrew时遇到问题,它看起来像问题(UTF-8(ArgumentError)错误消息中的无效字节序列)是由于我的PATH中的错误。当我运行回声$ PATH,我得到以下(一定要滚动到最右边下面的代码块,看看故障):OSX Yosemite - 路径中的无效字符

/usr/local/mysql/bin:/opt/subversion/bin/:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:PATH=/usr/local/share/python:$PATH:PATH=/usr/local/share/npm/bin:$PATH:export PATH��:/usr/local/git/bin 

我不知道在哪里那些奇怪的字符之前刚刚/ usr/local/git/bin路径来自。我使用bash(试过zshell,同样的问题)。我找不到来自哪里。我的.bash_profile文件看起来也很干净。

+1

无论如何放置它们还有另一个错误 - 'export'是命令的一个(通常是不必要的)部分,而不是该值的一部分。这个值表明你在发生这种情况时在本地安装了'git'。还有其他多种错误,其中有'PATH ='和'$ PATH'作为值的一部分。但是,如果不访问您的文件,我们无法排除故障。你是否手动编辑你的'.bashrc'?那么'.profile'呢? – tripleee 2014-11-24 04:23:40

+0

我可以通过编辑〜/ .bashrc和〜/ .bash_profile文件来获得吗? .bashrc是空白的,并且.bash_profile有一些由macports修改的东西。另外,如何让这些文件可供查看? – 2014-11-24 04:31:18

+1

您需要确定PATH错误更改的位置。因为你使用的是'bash',所以我建议你使用'bash -x -l'(后面跟着'exit')来看看登录时会发生什么。看起来好像有5次尝试在代码中设置PATH,其中4个是错误的。不过,你所看到的不仅仅是一点点奇怪。你也可以尝试'echo“$ PATH”| od -c“,它会告诉你错误字符有哪些字节值。 – 2014-11-24 04:52:22

回答

1

检查您的~/.profile,~/.bash_profile~/.bashrc文件。这些值也可能在/etc/profile或其他系统范围的文件中设置,但是错误的性质使我可以假设它们是您自己手动编辑个人文件的结果。你是决定你什么时候改变什么的最好的评判者。

查找条目,如下列:

PATH='/usr/local/share/python:$PATH' 
PATH='PATH=/usr/local/share/npm/bin:$PATH' 
PATH='export PATH��:/usr/local/git/bin' 

相反,它们应该像

PATH=/usr/local/share/python:$PATH 
PATH=/usr/local/share/npm/bin:$PATH 
PATH=$PATH:/usr/local/git/bin 
# Not strictly necessary -- PATH is already exported 
export PATH 

看到一个模式?这些全部通过将其值设置为prefix:$PATH$PATH:suffix将值添加到PATH,其中新前缀或后缀是安装本地程序包的目录。新值应该是前缀还是后缀可能没有多大意义 - 除非您尝试覆盖系统版本(例如,您的/usr/local/git已安装,因为/usr/bin/git太旧 - 那么,重要的是您的local版本首先在PATH)。第一次运行命令时,速度差异也很小;如果它在PATH的末尾,那么shell在查找它之前必须查找更多的地方。

在报价的差异是显著 - PATH=$PATH:suffix展开为PATH:suffix加在旧值,而PATH='$PATH:suffix'取代的PATH使用该文本字符串$PATH:suffix加在旧值。你很幸运,这些都没有完全取代原来的PATH,这会使你的shell一般不可操作(至少在你发现你必须使用/bin/ls而不是ls)。

+0

感谢您的详细解释。我想我的困惑(因为我对这一切都很陌生)是有很多文件可以设置这个路径变量。有啄食顺序吗?因为我查看了〜/ .profile,〜/ .bash_profile和〜/ .bashrc,并且这些文件都没有引用任何与git相关的东西。 – 2014-11-25 03:16:30

+0

@ JonathanLeffler的评论有一个很好的调试方法。最后,如果你不知道错误值来自哪里,你可以在你自己的启动文件中覆盖它们('.bashrc'应该覆盖大部分基地)。 – tripleee 2014-11-25 04:44:37

+0

再次感谢您的帮助。我终于能够通过在'.bashrc'文件中覆盖这个问题来解决问题。我很失望,我没有更多时间去探索@ JonathanLeffler的疑难解答提示。我确实花费了一些时间,虽然我没有找到问题的根源,但我确实学到了更多关于它是如何工作的。下一次,我会更仔细地进行实验。 – 2014-11-26 13:46:38