【问题标题】:zsh: permission denied: /Users/myNamezsh:权限被拒绝:/Users/myName
【发布时间】:2021-06-17 07:06:57
【问题描述】:

我是编程新手,我正在尝试将 SSH 密钥添加到我的 GitHub 帐户(使用 mac 界面)。当我尝试使用以下命令复制生成的密钥时:

~pbcopy

请有人帮帮我。

【问题讨论】:

  • 我很确定您不希望在命令开头使用~~ 是您的主目录的 shell 简写,如果这是命令行上的第一件事,则 shell 将尝试将其作为命令执行......并且您无法执行目录。你是从某个地方复制的吗?如果是这样,他们可能会使用它作为 shell 提示符的替代(参见this question 以了解类似情况)。
  • @NidhiSinha :请按照here 的解释,格式化您发帖中的命令,以便它们使用固定字体(不成比例)。
  • 第一次来这里。下次会注意的
  • @GordonDavisson 谢谢你的建议。它有帮助。但是,我想知道为什么我会收到这个问题:zsh: permission denied: /Users/myName 每当我输入这个 ~

标签: macos terminal zsh access-denied


【解决方案1】:

在基本的 shell 命令中,第一个“单词”是要运行的程序的名称(即实际执行命令的可执行文件的名称)。例如,如果您运行命令ls -l ~/testkey.pub,它实际上会运行一个名为“ls”的程序(可能在/bin 目录中,因此它的完整路径是/bin/ls),并将参数“-l”和“/Users/myName/testkey.pub”。

“等等”,我听到你说,“'/Users/myName' 位是从哪里来的?”好吧,~ 是您的主目录路径的 shell 简写,当 shell 将其视为命令的一部分时(嗯,取决于确切的上下文),它会将其替换为您的主目录的路径。因此,~/testkey.pub 扩展为/Users/myName/testkey.pub。试试echo ~,你就会明白我的意思了。

现在,当你尝试运行命令时

~ pbcopy < ~/testkey.pub

shell 扩展了~s,给出:

/Users/myName pbcopy < /Users/myName/testkey.pub

并且由于“/Users/myName”是该命令的第一个单词,它会尝试将其作为程序执行。但是你的主目录不是可执行程序,它是一个目录,你不能执行目录,所以你得到一个权限错误。

我很确定 ~ 实际上根本不应该是命令的一部分。我想你只是想跑:

pbcopy < ~/testkey.pub

...它运行 /usr/bin/pbcopy 可执行文件,并从文件 /Users/myName/testkey.pub 提供输入。

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多