Vấn đềBạn vừa chạy xong tập lệnh cài đặt curl hoặc wget cho Node Version Manager. Mọi thứ có vẻ ổn. Nhưng ngay khi bạn mở một cửa sổ terminal mới hoặc khởi động lại máy Mac, bạn lại gặp phải một thông báo gây khó chịu:
zsh: command not found: nvm
Nếu bạn đang sử dụng máy Mac đời cũ (trước năm 2019), bạn có thể thấy lỗi bash: nvm: command not found thay thế. Điều này xảy ra do shell của bạn chưa biết vị trí của nvm đang nằm ở đâu.
Cách khắc phục trong 60 giâyHầu hết các máy Mac hiện nay đều sử dụng Zsh làm shell mặc định. Nếu trình cài đặt không tự động cập nhật cấu hình, bạn có thể thực hiện thủ công qua bốn bước nhanh chóng:
- Mở terminal và nhập:
nano ~/.zshrc- Cuộn xuống dưới cùng và dán ba dòng này:export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Tải nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Tải nvm bash_completion- Nhấn Ctrl + O, sau đó nhấn Enter để lưu. Nhấn Ctrl + X để thoát trình soạn thảo.- Áp dụng các thay đổi ngay lập tức:source ~/.zshrc## Điều gì đã xảy ra?Về bản chất,nvmkhông phải là một chương trình độc lập như Chrome hay Slack. Nó là một hàm shell (shell function). Để hoạt động, nó phải được "sourced" (nạp) mỗi khi terminal của bạn khởi động. Trình cài đặt thường cố gắng thêm mã nạp này vào profile của bạn, nhưng thường thất bại vì một vài lý do: - Thiếu tệp cấu hình: Các bản cài đặt macOS mới thường không có sẵn tệp
.zshrc. Nếu tệp này không tồn tại, trình cài đặt sẽ đơn giản là bỏ qua.- Chuyển đổi sang Zsh: Kể từ macOS Catalina (10.15), Apple đã chuyển từ Bash sang Zsh. Nhiều hướng dẫn cũ vẫn chỉ người dùng chỉnh sửa.bash_profile, tệp mà Zsh hoàn toàn bỏ qua.- Quyền ghi: Các thiết lập bảo mật trên các phiên bản macOS mới hơn (như Sonoma 14.0) đôi khi có thể chặn các tập lệnh sửa đổi thư mục gốc (home directory) của bạn.## Giải pháp chi tiết cho mọi thiết lập### Cách 1: Dành cho macOS hiện đại (Zsh)Chạy lệnhecho $SHELL. Nếu kết quả trả về là/bin/zsh, hãy làm theo các bước sau để đảm bảo cấu hình của bạn được lưu vĩnh viễn. - Kiểm tra xem tệp có tồn tại không:
ls -a ~ | grep .zshrc.- Nếu không thấy kết quả nào, hãy tạo nó:touch ~/.zshrc.- Mở tệp:open -e ~/.zshrc. Lệnh này mở TextEdit, có thể dễ sử dụng hơnnanođối với một số người.- Dán mã khởi tạo NVM vào cuối tài liệu.- Lưu và khởi động lại terminal của bạn.### Cách 2: Dành cho macOS đời cũ (Bash)Nếu shell của bạn là/bin/bash, quy trình cũng tương tự nhưng tên tệp sẽ thay đổi. Bạn sẽ cần chỉnh sửa~/.bash_profilehoặc~/.profile. Sử dụng lệnhsource ~/.bash_profileđể cập nhật cài đặt sau khi lưu.
Cách 3: Trường hợp ngoại lệ với HomebrewBạn có sử dụng brew install nvm không? Mặc dù những người tạo ra NVM chính thức khuyên không nên sử dụng Homebrew, nhưng đây vẫn là một lựa chọn phổ biến cho người dùng Mac. Nếu bạn đi theo hướng này, các đường dẫn tiêu chuẩn sẽ không hoạt động. Hãy thêm khối mã cụ thể này vào .zshrc của bạn:
export NVM_DIR="$HOME/.nvm"
mkdir -p $NVM_DIR
[ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && \. "$(brew --prefix)/opt/nvm/nvm.sh"
[ -s "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm" ] && \. "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm"
Xác minh kết quảĐừng chỉ mặc định là nó đã hoạt động. Hãy kiểm tra lại bằng lệnh sau:
command -v nvm
Nếu thiết lập chính xác, terminal sẽ trả về từ nvm. Nếu không trả về gì, hãy kiểm tra lại các đường dẫn tệp của bạn. Bạn cũng có thể thử lệnh nvm --version; tính đến cuối năm 2023, bạn sẽ thấy kết quả như 0.39.5 hoặc cao hơn.

