Mac终端错误-bash:找不到命令 - El Capitan 10.11.13

时间:2016-03-10 21:22:24

标签: macos bash terminal postgis

我第一次打开Mac终端时收到错误消息 -

-bash: Applications: command not found

奇怪(或者可能不那么奇怪),当我打开另一个标签时,我有时会得到一个不同的错误 -

-bash: README.md: command not found

-bash: [: missing `]'

我刚刚注意到今天早上......昨晚我做了两件事,我觉得可能导致了这一点,但我不确定我是否正确,也不知道如何正确解决这个问题。我的操作系统是El Capitan 10.11.13。

首先,昨晚,我使用Homebrew安装PostGIS 2.2 - 我的Postgres版本是9.5.1。

其次,我为我的一个项目提出了Github pull请求(我不确定拉取请求如何扰乱我的bash配置文件,但Github的标准自述文件格式是README.md,所以我以为我最好在这里提一下。)

我的bash个人资料对我来说似乎很干净 -

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function
export PATH=${PATH}:/usr/local/mysql/bin
*    #EDITED TO INCLUDE THIS ASTERISK, WHICH I NEGLECTED BEFORE

任何人都可以了解发生的事情以及如何解决这个问题?我使用终端相当新,所以我不太清楚如何解释这个。

2 个答案:

答案 0 :(得分:5)

如何解决Bash启动问题

构建于Jonathan Leffler's helpful comment

  • 从现有的终端窗口运行script log.txt bash -lxv
    • 这将创建一个新的登录(-l)shell(默认情况下OSX上创建的shell Terminal.app的类型)并记录其所有启动活动。
    • 除了捕获常规输出外,
      • -v会在阅读时显示未展开的来源行。
      • -x显示已执行的展开的单个命令,前缀为+
  • 执行exit以终止该shell,这会将刚打印的所有内容保存到log.txt
  • 研究文件log.txt以查看正在发生的事情。

结果是OP的问题:

  • 在他们的个人资料中的一行上的一个迷路*扩展为当前目录中的文件和文件夹名称的字母顺序排序列表(称为路径名扩展或通配的过程)。

    • 不仅*作为自己的命令(或命令的开头)不有用,它可能导致意外执行命令 (见下文)。
  • Bash然后尝试执行此扩展的结果作为命令执行,第一个单词(以空格分隔的标记)解释为命令 name

    • 这失败了,因为第一个单词不是命令名。
    • 但是,如果第一个单词恰好是有效的命令名称,例如file该命令将执行
      (除非当前目录恰好在$PATH中,否则第一个匹配的文件名是否是可执行文件并不重要 - 重要的是名称是否与现有命令名称相匹配。) LI>
  • 启动时,用户的主目录。是工作的目录。相比之下,打开另一个标签后,将使用当时正在运行的目录。无论发生什么情况。

    • 这解释了不同的症状,因为不同目录中的globbing通常会产生不同的名单,Bash将尝试执行相应的第一个单词。

答案 1 :(得分:0)

感谢大家的帮助,我能够解决这个问题。当我发布我的问题时,我从我的bash配置文件中留下了一个微小但重要的细节 - 最后一行上的一个单独的星号。

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function

export PATH=${PATH}:/usr/local/mysql/bin  #ADDS MYSQL TO PATH EVERY TIME TERMINAL OPENS
*

我以前甚至没有注意到这件事,更不用说明白了它在做什么。我评论了它,现在一切都完美无缺。我不确定这个星号是否是bash配置文件的标准部分,但如果它一直存在,直到今天早上我安装了PostGIS并做了一个Github拉后它没有给我带来任何麻烦请求。我不确定为什么这些行为会引发这个问题,但是我试图尽可能地描述,以防其他人遇到这个问题。