【问题标题】:Why isn't this file being copied to my $PATH?为什么这个文件没有被复制到我的 $PATH 中?
【发布时间】:2012-07-02 07:07:03
【问题描述】:

我试图按照this question 将 mvim shell 脚本添加到 /usr/local/bin 形式的 bash 中,一切似乎都正常;但是,每当我尝试执行脚本时,我仍然会收到“找不到命令”。

从我的 mvim 文件所在的目录(下载)中,我输入:

sudo cp -v mvim /usr/local/bin

我得到输出:

mvim -> /usr/local/bin

然后无论我输入mvim还是mvim -v都不起作用

我以前从未在我的 $PATH 中添加过任何东西,但即使在查阅了许多关于它是如何完成的教程之后,我似乎也无法让 mvim 作为终端命令工作。

编辑:

echo $PATH

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

和

ls -l mvim

-rwxr-xr-x ...

和

ls -l /usr/local/bin

-rwxr-xr-x ...

【问题讨论】:

  • 当您执行ls 时,您是否在/usr/local/bin 文件夹内?
  • 我似乎无法导航到那里,它只是说“不是目录”。如果我只是在终端中输入“/usr/local/bin”,vim 就会打开(不是 mvim)。我是否将“/usr/local/bin”映射到 vim 命令或其他什么?
  • 非常有趣。我会更新我的答案。
  • 你能显示ls -l /usr/local/bin的输出吗?
  • ls -l /usr/local/bin-rwxr-xr-x 1 root ...

标签: bash macvim


【解决方案1】:

/usr/local/bin 存在吗?

如果你运行sudo cp -v mvim /usr/local/bin并且/usr/local/bin文件夹不存在,cp会将mvim复制到/usr/local/文件夹并命名为bin。

您需要先使用sudo mkdir -p /usr/local/bin 创建文件夹。然后,您可以使用前面的cp 命令复制mvim。

mvim 可执行吗?

您确定/usr/local/bin/mvim 设置了executable 标志吗?试试ls -l /usr/local/bin/mvim,如果结果以-rw-r--r--开头,那么mvim是不能执行的。

然后您需要运行sudo chmod +x /usr/local/bin/mvim。如果您现在再次运行之前的ls 命令,结果应该以-rwxr-xr-x 开头。 x 表示该文件现在可由其所有者、其组成员以及所有其他用户可执行。

/usr/local/bin 在你的 PATH 中吗?

您确定/usr/local/bin 是您的PATH 变量的一部分吗?

尝试echo $PATH,如果输出不包含/usr/local/bin,那么shell 将不会在那里查找命令。然后你需要运行export PATH=$PATH:/usr/local/bin

【讨论】:

  • 很好的建议 :) 但是,我仍然希望看到原始“mvim”文件的“ls -l”和当前 $PATH 的“echo”。只是为了确定:)
  • 我在输入命令时得到:“不是目录”。我对我的问题进行了编辑,显示了echo $PATH 的输出。
  • @paulsm4 谢谢。我已经更新了我的答案以涵盖潜在的PATH 问题
  • @stariz77 您是否尝试过建议的ls 命令?你能发布输出吗?
【解决方案2】:

这是您发布的内容:

mvim -> /usr/local/bin

我认为这是错误。它看起来像“mvim”是一个符号链接,它指向目录 /usr/local/bin。

如果是这样,这不是你想要的!

请执行以下操作:

  1. 打开一个终端(命令行)窗口。

  2. “cd”到带有原始“mvim”的目录(您试图复制到 /usr/localbin 的那个)

  3. 剪切/粘贴:

    a) 目录名

    b)ls -l mvim

    c)echo $PATH

“echo $PATH”也很重要。

请在您的回复中剪切/粘贴所有三个。

提前谢谢你。

【讨论】:

  • 这是cp -v的正常输出
  • @Igor Chubin - 如果 stariz77 剪切/粘贴我要求的输出,我们应该能够解决他的问题。没有它,我们只是在“猜测”。我不喜欢猜测——你呢? ;)
【解决方案3】:

要么启动一个新的 shell,要么输入:

hash -r

以便 shell 重新检查 $PATH 中的目录。 (它会缓存内容以提高效率,当您将内容添加到路径中的目录时,您需要重新加载该缓存。)

【讨论】:

    【解决方案4】:

    检查:

    1. 如果 /usr/local/bin/mvim 是可执行的(如果不是,则添加 exec 位:chmod +x /usr/local/bin/mvim)
    2. 如果 /usr/local/bin 在 $PATH (echo $PATH) 中

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2015-06-18
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多