找不到用于全局 npm 安装的终端 (zsh) 命令

Nor*_*ldt 5 macos terminal zsh npm oh-my-zsh

这让我发疯!我做了很多谷歌搜索并尝试了各种方法。(我不认为这是一个超级用户主题)

我最近在终端上遇到了很多麻烦。我一定是什么地方搞砸了,因为它使用的工作就好了,现在我不能让它再也不认识我的命令nvmglobal npm包一样expo。它只是给了我这样的错误:

? expo      
zsh: command not found: expo
Run Code Online (Sandbox Code Playgroud)
? nvm ls
zsh: command not found: nvm
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:npmbrewj找到命令)

如果我这样做,echo $PATH我会得到:

/Users/norfeldt/Library/Android/sdk/tools/bin:/Users/norfeldt/Library/Android/sdk/tools:/Users/norfeldt/Library/Android/sdk/platform-tools:/Applications/anaconda/bin:~/Library/Python/2.7/bin:~/.npm-global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

(奇怪的行为是,如果我再做echo $PATH一次,它会在一行中返回两倍相同的输出)

它的可读版本(替换::\n

/Users/norfeldt/Library/Android/sdk/tools/bin:
/Users/norfeldt/Library/Android/sdk/tools:
/Users/norfeldt/Library/Android/sdk/platform-tools:
/Applications/anaconda/bin:
~/Library/Python/2.7/bin:
~/.npm-global/bin:
/usr/local/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin
Run Code Online (Sandbox Code Playgroud)

我的.zshrc文件看起来像这样:

# Node & NPM
#PATH="/usr/local/bin:$PATH"
PATH="~/.npm-global/bin:$PATH"
#PATH="~/.npm-global/lib/node_modules:$PATH"

# Git
alias master="git checkout master"
alias dev="git checkout develop"
alias hotfix="git flow hotfix"
alias feature="git flow feature"
alias tags="git push --tags"

# Pip - https://gist.github.com/haircut/14705555d58432a5f01f9188006a04ed
PATH="~/Library/Python/2.7/bin:$PATH"

# added by Anaconda2 4.4.0 installer
PATH="/Applications/anaconda/bin:$PATH"

# Android
export ANDROID_HOME=/Users/norfeldt/Library/Android/sdk
PATH="${ANDROID_HOME}/platform-tools:$PATH"
PATH="${ANDROID_HOME}/tools:$PATH"
PATH="${ANDROID_HOME}/tools/bin:$PATH"

alias emu="pushd ${ANDROID_HOME}/tools;emulator -avd Pixel_2; popd"

# Path to your oh-my-zsh installation.
export ZSH=/Users/norfeldt/.oh-my-zsh

ZSH_THEME="avit"

# Autojump
[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh

# shell startup.
plugins=(git)

source $ZSH/oh-my-zsh.sh

# Load zsh-autosuggestions.
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

# zsh-syntax-highlighting
source /Users/norfeldt/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

export PATH
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

更新

阅读@l'L'l 的友好回答和这个回答,我做了以下事情:

更新了我.bash_profile

export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)

(这是该文件中唯一的内容)

创建一个.bashrc通过$touch .bashrc(可能已经删除了旧..但是,这仅仅是一个空文件。)

将以下行添加到 .zshrc

PATH="$PATH:$HOME/.npm-global/bin/"             # Changed ~ to $HOME
PATH="$PATH:$HOME/.npm-global/lib/node_modules" # Changed ~ to $HOME
...
# Bash stuff
source ~/.bashrc
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

做了一个source ~/.zshrc并重新启动了我的终端。

现在nvmexpo作品!谢谢

l'L*_*L'l 5

您可能会尝试一些事情,首先是~/.bash_profile从您的.zshrc文件中获取。有可能nvm命令是在那里设置的,而你的zshshell 根本不知道它存在。

注意:在 OS X 上,如果您在运行安装脚本后得到 nvm: command not found,则可能是以下原因之一:-

您的系统可能没有.bash_profile设置命令的文件。只需创建一个touch ~/.bash_profile并再次运行安装脚本,您可能需要重新启动终端实例。尝试在终端中打开一个新选项卡/窗口并重试。如果以上没有解决问题,打开你的.bash_profile并添加
以下代码行:

source ~/.bashrc

有关此问题和可能的解决方法的更多信息,请参阅此处

? 由于您使用的是zshat source ~/.bash_profile& ~/.bashrcin .zshrc


如果您homebrew以前安装过,那么您可能需要将以下内容添加到.zshrc

导出/源nvm安装homebrew

# source nvm
export NVM_DIR=~/.nvm

if hash brew 2>/dev/null; then
    source $(brew --prefix nvm)/nvm.sh
    source `brew --prefix`/etc/profile.d/z.sh
fi
Run Code Online (Sandbox Code Playgroud)

npm未通过homebrew以下方式安装:

export NVM_DIR="~/.nvm"
source ~/.nvm/nvm.sh
[[ -s "$NVM_DIR/nvm.sh" ]] && \. "$NVM_DIR/nvm.sh" # load nvm               
[[ -s "$NVM_DIR/bash_completion" ]] && \. "$NVM_DIR/bash_completion" # load nvm bash_completion
Run Code Online (Sandbox Code Playgroud)

? https://github.com/nvm-sh/nvm