티스토리 뷰

💻 컴퓨터공학

WSL 우분투 세팅하기

Caesium133 2018.06.27 11:48

윈도우에 리눅스 올리기에 이어서 WSL을 이용해 우분투 환경을 세팅해보겠다. 윈도우 스토어에서 우분투를 설치한 뒤 실행하여 UNIX 아이디와 패스워드를 설정하고 나면 아래와 같은 화면이 나타난다.

wsl bash

작업 디렉토리 링크하기

~ 경로는 home 디렉토리를 의미하며, 처음 계정을 생성하면 기본적으로 /home/{ID}가 home 디렉토리로 설정된다. 어디서든 cd 명령어를 통해 이곳으로 이동할 수 있다. 하지만 주로 작업하는 디렉토리는 이곳이 아니므로, 설정이 필요하다.

home 디렉토리 자체는 나중에 또 다르게 사용할 것 같아서 home 디렉토리의 경로를 변경하기 보다는 이곳에 링크 파일을 두기로 결정했다. 내가 주로 작업 파일을 두는 경로는 c/Bitnami/wampstack/apache2/htdocs이다. wsl에서는 c드라이브가 \mnt 디렉토리의 하위 폴더로 존재하므로, 우분투에서 절대 경로는 /mnt/c/Bitnami/wampstack/apache2/htdocs가 된다. 만약 home 디렉토리 경로를 변경한다면 다음 명령을 사용하면 된다.

# usermod -d {PATH} {ID}
$ usermod -d /mnt/c/Bitnami/wampstack/apache2/htdocs parksb

링크 파일은 윈도우의 바로가기 같은 것이다. 링크는 symbolic link와 hard link로 나뉘는데, 전자는 윈도우의 바로가기와 완전히 동일하다. 만약 원본 파일이 삭제된다면 symbolic link도 무효화된다. 후자는 동일한 내용의 다른 파일을 만드는 것이다. 원본 파일이나 hard link 둘 중 하나가 삭제돼도 다른 하나는 남아있다. 만약 원본 파일의 내용이 변경된다면 hard link의 파일 내용도 변경된다.

내가 원하는 것은 바로가기이므로, symbolic link 파일을 만들어보겠다.

# ln -s {OPTION} {ORIGIN} {TARGET}
$ ln -s /mnt/c/Bitnami/wampstack/apache2/htdocs /home/parksb/htdocs

이렇게 하면 /home/parksb/mnt/c/Bitnami/wampstack/apache2/htdocs 디렉토리를 링크한 htdocs 파일이 만들어진다. 따라서 cd ~/htdocs를 하면 /mnt/c/Bitnami/wampstack/apache2/htdocs로 이동하는 것과 같아진다. -s 옵션은 symbolic link 파일을 만들겠다는 의미다. 만약 hard link 파일을 만든다면 아무런 옵션을 주지 않아도 된다.

Git branch 보여주기

git bash를 사용하면 bash에 git branch가 나타난다.

bit bash

하지만 wsl bash에서는 git branch가 나타나지 않으므로 따로 설정을 해줘야 한다. 먼저 vim으로 .bashrc 파일을 열어서 bash 설정을 변경해주자. 나는 vim으로 수정했는데, vim이 익숙하지 않다면 vim 사용법을 참고해보자. 절대로 리눅스 파일을 윈도우 툴로 수정해서는 안 된다! 위험한 결과를 초래할 수 있으니 cli 에디터를 사용하지 못하겠다면 차라리 우분투를 gui로 사용하는 것을 권한다.

$ vim ~/.bashrc

맨 아래에 다음과 같은 구문을 추가해준다. (Display git branch in bash prompt에서 giannidk가 작성한 것을 기존 형식에 맞게 조금 수정한 것이다.)

# display git branch in bash prompt
git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

export PS1='\[\033[0;32m\]\[\033[0m\033[0;32m\]\u@\h:\[\033[0;36m\]\w\[\033[0;32m\]$(git_branch)\[\033[0;32m\]\[\033[0m\033[0;32m\] \$\[\033[0m\033[0;32m\]\[\033[0m\]'

저장하고, 수정한 것을 적용시켜준다.

$ source ~/.bashrc

그리고 결과는:

wsl bash

git init이 안 된 곳에는 branch가 나오지 않고, init이 된 곳에는 나타난다.

npm 사용하기

가장 먼저 터진 이슈는 vscode의 통합 터미널에서 npm이 안 먹히는 것이었다.

$ npm -v
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

검색해보니 Issue running npm command라는 깃허브의 WSL 저장소 이슈가 가장 먼저 나왔다. 정확하게 내 문제와 일치했다. 기쁘게도 아래에는 해결책도 있었다. 먼저 리눅스쪽에 node를 설치해준다.

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs

그리고 .profile 파일에서 환경변수를 설정해야 한다.

$ vim ~/.profile

.profile 파일의 PATH 부분을 다음과 같이 수정한다.

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

저장하고 나와서 설정을 바로 적용해준다. source를 해주지 않으면 컴퓨터를 재부팅해야 설정이 적용된다.

$ source ~/.profile

npm의 위치를 확인해보면 우분투 경로가 나온다.

$ which npm
/usr/bin/npm

이제 npm을 마음대로 사용할 수 있다!

댓글
댓글쓰기 폼