🐧 μœˆλ„μš°μ—μ„œ μš°λΆ„νˆ¬ 돌리기

κ°œλ°œμ„ μœ„ν•œ WSL μ„ΈνŒ…

μœˆλ„μš°λ‘œ κ°œλ°œμ„ ν•˜λŠ” μž…μž₯μ—μ„œ 터미널을 λ‹€λ£¨κΈ°λž€ 쑰금 κΉŒλ‹€λ‘­λ‹€. λ¦¬λˆ…μŠ€λ‚˜ OSX ν™˜κ²½μ— λ§žμΆ°μ§„ ν”„λ‘œμ νŠΈμ— μ°Έμ—¬ν•˜λ©΄ λͺ…령이 λ‹€λ₯΄κ²Œ λ™μž‘ν•΄ μ‚½μ§ˆν•˜κ³ , OSX의 νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €μΈ Homebrew같은 것도 μ—†μ–΄μ„œ 또 μ‚½μ§ˆμ„ ν•˜κ³€ ν•œλ‹€.

λ•Œλ¬Έμ— μœˆλ„μš°μ—μ„œ μš°λΆ„νˆ¬λ₯Ό κ°€μƒλ¨Έμ‹ μœΌλ‘œ λŒλ¦¬κ±°λ‚˜ λ©€ν‹°λΆ€νŒ…μ„ ν•˜λŠ” λ“± λ‹€μ–‘ν•œ 방법듀을 μ‹œλ„ν–ˆλŠ”λ°, μ—­μ‹œ 번거둭고 λΆˆνŽΈν–ˆλ‹€. 그러던 쀑 WSL을 μ•Œκ²Œλλ‹€.

WSL은 Windows Subsystem for Linux의 μ•½μžλ‘œ, μœˆλ„μš° μ„œλΈŒμ‹œμŠ€ν…œμ— λ¦¬λˆ…μŠ€λ₯Ό νƒ‘μž¬ν•˜λŠ” 것이닀. λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈμ—μ„œ κ³΅μ‹μ μœΌλ‘œ μ§€μ›ν•˜λŠ” 것이기 λ•Œλ¬Έμ— μ–΄λŠμ •λ„ μ•ˆμ •μ„±μ„ 보μž₯ν•  수 μžˆλ‹€. κ·Έλƒ₯ μœˆλ„μš° μŠ€ν† μ–΄μ—μ„œ μš°λΆ„νˆ¬λ₯Ό μ„€μΉ˜ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 방법도 κ°„λ‹¨ν•˜λ‹€. Windows Subsystem for Linux Installation Guide for Windows 10을 μ°Έκ³ .

μ„€μΉ˜ν•œ μš°λΆ„νˆ¬λ₯Ό μ‹€ν–‰ν•˜μ—¬ UNIX 아이디와 νŒ¨μŠ€μ›Œλ“œλ₯Ό μ„€μ •ν•˜κ³  λ‚˜λ©΄ μ•„λž˜μ™€ 같은 화면이 λ‚˜νƒ€λ‚œλ‹€. 이제 μœˆλ„μš°μ—μ„œ μš°λΆ„νˆ¬ bashλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€!

λΉ„μ£Όμ–ΌμŠ€νŠœλ””μ˜€ μ½”λ“œμ—μ„œ 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κ°€ λ‚˜νƒ€λ‚œλ‹€.

λΉ„μ£Όμ–ΌμŠ€νŠœλ””μ˜€ μ½”λ“œμ—μ„œ git bashλ₯Ό μ‹€ν–‰.

ν•˜μ§€λ§Œ wsl bashμ—μ„œλŠ” git branchκ°€ λ‚˜νƒ€λ‚˜μ§€ μ•ŠμœΌλ―€λ‘œ λ”°λ‘œ 섀정을 ν•΄μ€˜μ•Ό ν•œλ‹€. λ¨Όμ € vim으둜 .bashrc νŒŒμΌμ„ μ—΄μ–΄μ„œ bash 섀정을 λ³€κ²½ν•΄μ£Όμž. λ‚˜λŠ” vim으둜 μˆ˜μ •ν–ˆλŠ”λ°, vim이 μ΅μˆ™ν•˜μ§€ μ•Šλ‹€λ©΄Β vim μ‚¬μš©λ²•μ„ μ°Έκ³ ν•΄λ³΄μž.Β μ ˆλŒ€λ‘œ λ¦¬λˆ…μŠ€ νŒŒμΌμ„ μœˆλ„μš° 툴둜 μˆ˜μ •ν•΄μ„œλŠ” μ•ˆ λœλ‹€!Β μœ„ν—˜ν•œ κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 μžˆμœΌλ‹ˆ cli 에디터λ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ² λ‹€λ©΄ μ°¨λΌλ¦¬Β μš°λΆ„νˆ¬λ₯Ό gui둜 μ‚¬μš©ν•˜λŠ” 것을 κΆŒν•œλ‹€.

$ vim ~/.bashrc

맨 μ•„λž˜μ— λ‹€μŒκ³Ό 같은 ꡬ문을 μΆ”κ°€ν•΄μ€€λ‹€. (Display git branch in bash promptλ₯Ό μ°Έκ³ ν•΄ κΈ°μ‘΄ ν˜•μ‹μ— 맞게 쑰금 μˆ˜μ •ν–ˆλ‹€.)

# 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

그리고 κ²°κ³ΌλŠ”:

터미널에 ν˜„μž¬ 브랜치 이름 좜λ ₯.

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 μ €μž₯μ†Œ μ΄μŠˆκ°€ κ°€μž₯ λ¨Όμ € λ‚˜μ™”λ‹€. WSL은 μ„œλΈŒμ‹œμŠ€ν…œμ΄κΈ° λ•Œλ¬Έμ— μœˆλ„μš°μ— nodeλ₯Ό μ„€μΉ˜ν–ˆλ”λΌλ„ λ¦¬λˆ…μŠ€μͺ½μ— 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 ~/.profile

npm의 μœ„μΉ˜λ₯Ό 확인해보면 μš°λΆ„νˆ¬ κ²½λ‘œκ°€ λ‚˜μ˜¨λ‹€.

$ which npm
/usr/bin/npm

이제 μœˆλ„μš°μ—μ„œλ„ λ¦¬λˆ…μŠ€μ™€ 같은 ν™˜κ²½μ—μ„œ μž‘μ—…ν•  수 μžˆλ‹€!