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

Mac terminal error -bash: command not found - El Capitan 10.11.13

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

-bash: Applications: command not found

奇怪的是(或者可能不那么奇怪),当我打开另一个选项卡时,有时会出现不同的错误 -

-bash: README.md: command not found

-bash: [: missing `]'

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

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

其次,我为我的一个项目提出了 Github 拉取请求(我不确定拉取请求如何扰乱我的 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

任何人都可以阐明所发生的事情以及我如何解决这个问题吗?我对使用终端还很陌生,所以我不太确定如何解释它。

如何解决 Bash 启动问题:

为基础:

  • 来自现有终端 window、运行 script log.txt bash -lxv
    • 这将创建一个新登录名 (-l) shell(这是 shell Terminal.app 在 OSX 上默认创建的类型)和记录其所有启动活动。
    • 除了捕获常规输出外,
      • -v 显示正在阅读的 未展开的源代码 行。
      • -x 显示执行的 扩展的、单独的 命令,前缀为 +.
  • 执行exit终止shell,这将保存刚刚打印到log.txt的所有内容。
  • 研究文件log.txt看看发生了什么。

原来是OP的问题:

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

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

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

    • 这解释了不同的症状,因为在不同的目录中通配通常会导致不同的名称列表,Bash 将尝试执行相应的第一个单词。

感谢大家的帮助,才解决了这个问题。当我发布我的问题时,我在我的 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 拉取请求。我不确定为什么这些操作会触发此问题,但我会尽可能地进行描述,以防其他人遇到此问题。