【问题标题】:zsh: command not found even though it is in the pathzsh:找不到命令,即使它在路径中
【发布时间】:2020-10-19 11:38:54
【问题描述】:

我在 PATH 中有一个可执行文件,我可以通过 cd-ing 进入包含它的目录来执行它。但我无法在该目录之外执行它。我在一个mac上。可执行文件称为rosetta-cli。它位于~/rosetta-cli/rosetta-cli

我对 zsh 和 bash 不是很熟悉,我只知道最基本的要求:)

septerr@septerr ~ % echo $PATH
/usr/local/opt/node@10/bin:/Users/septerr/.rbenv/bin:/Users/septerr/.rbenv/shims:/usr/local/opt/node@10/bin:/Users/septerr/.rbenv/bin:/Users/septerr/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/septerr/go/bin:/Users/septerr/rosetta-cli/rosetta-cli:/Users/septerr/go/bin:/Users/septerr/rosetta-cli/rosetta-cli

septerr@septerr ~ % rosetta-cli
zsh: command not found: rosetta-cli

septerr@septerr ~ % rosetta-cli/rosetta-cli
CLI for the Rosetta API

Usage:
  rosetta-cli [command]

Available Commands:
  check:construction           Check the correctness of a Rosetta Construction API Implementation
  check:data                   Check the correctness of a Rosetta Data API Implementation

我的 .zshrc:

eval "$($(go env GOPATH)/bin/assume-role -init)"
eval "$(rbenv init -)"
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
export GO111MODULE=on
export GOPROXY=https://gomodules.cbhq.net/
export GONOSUMDB=github.cbhq.net  # For Go 1.13 and laterexport PATH="$HOME/.rbenv/bin:$PATH"
PATH="$HOME/.rbenv/bin:$PATH"
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export MONOREPO_PATH="/Users/septerr/src/sgupta/repo" && source $MONOREPO_PATH/scripts/rc/rc.sh

export PATH="/usr/local/opt/node@10/bin:$PATH"
export PATH=$PATH:$HOME/rosetta-cli/rosetta-cli

我的 .bash_profile:

eval "$(rbenv init -)"
export GO111MODULE=on
export GOPROXY=https://gomodules.cbhq.net/
export GONOSUMDB=github.cbhq.net  # For Go 1.13 and laterexport PATH="$HOME/.rbenv/bin:$PATH"
PATH="$HOME/.rbenv/bin:$PATH"
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export MONOREPO_PATH="/Users/septerr/src/sgupta/repo" && source $MONOREPO_PATH/scripts/rc/rc.sh
export PATH=$PATH:$HOME/rosetta-cli/rosetta-cli

我的 .bashrc:

eval "$($(go env GOPATH)/bin/assume-role -init)"
export MONOREPO_PATH="/Users/septerr/src/sgupta/repo" && source $MONOREPO_PATH/scripts/rc/rc.sh

问题-

  1. 为什么任何目录都没有rosetta-cli 命令?
  2. 为什么 $PATH 中的某些路径会重复?

感谢您的帮助!

【问题讨论】:

  • 请不要同时问两个问题。 PATH 重复是一个不同的问题。

标签: zsh


【解决方案1】:

您可以相信您的 shell,如果它显示 command not found,则可执行文件不在 PATH 中,相应地它不是可执行文件。

您显示了 PATH 和命令的名称,但您没有告诉我们该可执行文件应该在哪个目录中。做出有根据的猜测,我会说 /Users/septerr/rosetta-cli/rosetta-cli 应该是可执行文件的位置(但这是你需要比我更了解的事情)。如果你到目前为止同意,那就做一个

ls /Users/septerr/rosetta-cli/rosetta-cli/rosetta-cli

如果rosetta-cli 确实是该目录中的可执行文件,ls 应该显示它,并且应该打开 x 位

【讨论】:

    【解决方案2】:

    使用typeset -Ug path 删除zsh 中PATH 中的重复项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2016-09-02
      • 2018-09-24
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      相关资源
      最近更新 更多