bash와 zsh에서의 node 오류 + 쉘에 대하여

호이초이·2024년 10월 11일
1
post-thumbnail

인턴을 진행하던 중, bash와 zsh 에서의 node 오류가 발생했다. 동작은 아래와 같았다.
오류 동작 :
1. 컴퓨터 새로 키면 zsh쉘의 node 버전이 계속 옛날 버전.
2. bash 쉘로 바꾸고 다시 zsh 쉘로 갈아타면 다시 node 최신버전이 된다.

그래서 우선, zsh 환경에서 node를 재설치 해보고자 했다.

  1. zsh쉘에서 nvm의 버전을 확인했을 때, 존재하지 않았다.
  2. nvm을 설치하고자, 아래 명령어 입력
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

  <오류 발생>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 14926  100 14926    0     0   268k      0 --:--:-- --:--:-- --:--:--  269k
=> nvm is already installed in /home/roadie/.nvm, trying to update using git
=> => Compressing and cleaning up git repository

=> nvm source string already in /home/roadie/.bashrc
=> bash_completion source string already in /home/roadie/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

⇒ 이 메시지는 nvm이 이미 설치되어 있고, bash 쉘에서 nvm을 사용할 수 있도록 설정이 완료되었음을 의미한다. bash 쉘에서는 nvm이 정상적으로 작동하지만, zsh 쉘에서도 이를 사용하려면 동일한 설정을 ~/.zshrc 파일에 추가해야 한다.

🛠 즉, nvm 자체가 node를 관리하는 도구인데, 이게 zsh에 없었다!
  1. ~/.zshrc 파일 열기
nano ~/.zshrc
  1. nvm 설정 추가 (nvm 설정을 ~/.zshrc 파일에 추가합니다. 아래 내용을 파일에 추가)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
  1. 자동으로 최신 Node.js 버전 사용 설정
nvm use stable
  1. 이후, 터미널 종료 후, zsh쉘에서 nvm —version을 치면 nvm이 잘 나오게 된다.
  2. 또한 node -v 도 버전이 제일 최신 버전으로 잘 나오게된다.

정리한 김에 쉘과 커널에 대해서도 정리해보고자 한다!

pc 터미널을 커스텀하면서 쉘이 단순히 우리가 하드웨어가 동작할 수 있도록 동작하는 프로그램이라고 생각했다. 근데 쉘의 종류가 너무 많은 것이다! bash, zsh, ksh,, 그래서 쉘이 왜 많은건지, 어떻게 구체적으로 동작하는지 정리해보자!

shell(쉘)이란?

  • 사용자가 컴퓨터 운영체제와 상호작용할 수 있게 해주는 프로그램

    쉘은 사용자가 명령어를 입력하고, 그 명령어를 운영 체제에서 실행할 수 있는 형태로 해석하여 실행한다. 쉘은 명령어 줄 인터페이스로 동작하는 것이 일반적이지만, 그래픽 사용자 인터페이스로도 동작가능
    CLI (Command Line Interface) 쉘
    사용자가 텍스트로 명령어를 입력하는 방식.
    대표적인 CLI 쉘은 Bash, Zsh, Ksh, Sh
    CLI 쉘은 주로 서버 관리, 개발 작업, 자동화 스크립트 작성 등에 자주 사용
    GUI (Graphical User Interface) 쉘
    그래픽 사용자 인터페이스를 통해 사용자와 상호작용하는 쉘
    대표적으로 Windows의 파일 탐색기, MAC의 Finder

쉘의 기능

  • 명령어 실행
    사용자가 입력한 명령어를 해석하고 실행

  • 스크립트 실행
    여러 명령어를 포함한 스크립트를 작성하고 실행

  • 파일 및 디렉토리 관리
    파일과 디렉터리를 생성, 삭제, 이동, 복사 하는 등의 작업을 수행할 수 있다.

  • 프로그램 실행
    컴퓨터에 설치된 프로그램을 실행할 수 있다.

  • 환경변수 관리
    시스템 및 사용자 환경 변수를 설정하고 관리할 수 있다.


쉘의 종류 (자주 사용되는 쉘!)

  • bash
    가장 널리 사용되는 유닉스 쉘 중 하나로, 리눅스와 macOS에서 기본 쉘로 사용
    다양한 스크립트 기능을 제공하며, 많은 유닉스 환경에서 기본적으로 설치

  • zsh (zshell)
    bash와 호환되면서, 더 많은 기능과 유연성을 제공
    oh-my-zsh와 같은 플러그인 시스템을 사용하여 확장 가능
    자동 완성, 하이라이트 등 다양한 편의 기능을 포함하고 있다.


커널과 쉘의 관계

  • 커널은 하드웨어와 직접 상호 작용하고, 시스템 자원을 관리하는 운영 체제의 핵심 부분

관계

  1. 사용자 -> 쉘 -> 커널 -> 하드웨어:
    • 사용자는 쉘을 통해 명령어를 입력합니다.
    • 쉘은 이 명령어를 해석하여 커널에 전달합니다.
    • 커널은 하드웨어와 상호 작용하여 명령어를 실행합니다.
  2. 결과 -> 커널 -> 쉘 -> 사용자:
    • 하드웨어로부터의 결과는 커널을 통해 쉘로 전달됩니다.
    • 쉘은 결과를 사용자에게 출력합니다.
profile
칼을 뽑았으면 무라도 썰자! (근데 아직 칼 안뽑음)

0개의 댓글