Rbenv: ์–ดํŒจ๋ฅ˜์šฉ ์‹ฌ

์— ๋งŒ๋“  2012๋…„ 02์›” 16์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rbenv/rbenv

๋ฌผ๊ณ ๊ธฐ ๊ป์งˆ๊ณผ๋„ ํ˜ธํ™˜๋˜๋Š” ์‹ฌ์„ ์ œ๊ณตํ•˜๋Š” rbenv๋Š” ๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฐ ๋ณ€ํ™”๋Š” ์•„๋‹ˆ์ง€๋งŒ rbenv๊ฐ€ ๋น„ bash/zsh ์‰˜์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๊ณ ๊ธฐ์˜ ๊ตฌ๋ฌธ์€ ์‹ค์ œ๋กœ bash๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ œ์ •์‹ ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‹ฌ์€ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์กฐ์ •์ด ํ•„์š”ํ•œ ์„ค์น˜ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. rbenv ์ง€์›์„ ์œ„ํ•ด ๋‹ค์Œ์„ config.fish์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

๋ชจ๋“  20 ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ์ง€์›์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์‹ฌ์€ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์กฐ์ •์ด ํ•„์š”ํ•œ ์„ค์น˜ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. rbenv ์ง€์›์„ ์œ„ํ•ด ๋‹ค์Œ์„ config.fish์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

๊ณ ๋งˆ์›Œ, ์—๋“œ! :)

๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ์‹ ์‚ฌ์ด์ž ํ•™์ž์ž…๋‹ˆ๋‹ค.

@emcmanus๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด rbenv์˜ shim์€ Fish ๋˜๋Š” ๋‹ค๋ฅธ ์‰˜๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Bash๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด _installed_๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‰˜์ด ๋  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. shim์€ Bash ์Šคํฌ๋ฆฝํŠธ์ด๋ฉฐ Fish์—์„œ Ruby ๋˜๋Š” Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ Fish์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PATH rbenv๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. rbenv init ๋ฌผ๊ณ ๊ธฐ ํ˜ธํ™˜์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํŒจ์น˜๋ฅผ ์ˆ˜๋ฝํ•˜๋ฏ€๋กœ ์ˆ˜๋™์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

rbenv shell ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

rbenv shell ๋Š” RBENV_VERSION ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ ์—†์ด๋Š” ์–ด๋–ค ๊ธฐ๋Šฅ๋„ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ rbenv ์‰˜์ด ๋ฌผ๊ณ ๊ธฐ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค: https://coderwall.com/p/6hja1w

์–ด๋ฅ˜ ์‰˜์—์„œ rbenv๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‰˜์— ์„ค์ •๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ~/.bashrc ๋„ ~/.bash_profile ๋„ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. rbenv๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋ ค๋ฉด #375๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@espen ์€ ๋‚ด Coderwall ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์€ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ์ตœ์‹  ์ด๋ฆ„์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค). Gist๋Š” https://gist.github.com/5631243 ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ๋ž‘์„ ์ฃผ์„ธ์š”).

์ด ๋ฌธ์ œ๊ฐ€ ์ด์ œ ์ข…๋ฃŒ๋˜์—ˆ์Œ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ์ „ํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. rbenv init - ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฌผ๊ณ ๊ธฐ ๊ป์งˆ ์นœํ™”์ ์ธ ๊ตฌ๋ฌธ์„ ์—์ฝ”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” rbenv์˜ ์›๋ž˜ ๋‚ด๋ถ€์™€ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ _ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•_์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์›๋ž˜ rbenv ์ €์žฅ์†Œ์˜ ์ผ๋ถ€๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค...

๋‚˜๋Š” ๋˜ํ•œ @sstephenson ์ด

์•„๋งˆ๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ํŒŒ์ผ์€ https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init์ž…๋‹ˆ๋‹ค.
๋‚ด ๋ง์ด ๋งž์•„? ๋‚˜๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋งˆ์ˆ ์‚ฌ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€์™€ ํ˜‘๋ ฅํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ

๋ชจ๋“  ๋ฌผ๊ณ ๊ธฐ ์‚ฌ์šฉ์ž๋Š” rbenv init ์˜ ์ถœ๋ ฅ์„ ๊ฐœ์„ ํ•˜์—ฌ ๋ฌผ๊ณ ๊ธฐ ๊ป์งˆ์„ ์ง€์›ํ•˜๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ํ’€ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ POSIX ์…ธ์ด ์•„๋‹ˆ๋ฉฐ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ rbenv init ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ผ๋ถ€๋Š” csh ๋Œ€ํ•œ ์ง€์›์„ ์›ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. tcsh ). ๋ˆ„๊ตฐ๊ฐ€ POSIX๊ฐ€ ์•„๋‹Œ ์…ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋งํฌ๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@hauleth ๋‚˜๋Š” ๋‹น์‹ ์ด _์•„๋งˆ๋„_ ์ฐฉ๊ฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @emcmanus ๋ฐ @sstephenson ์˜ ์˜๊ฒฌ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ rbenv init ์—์„œ ๋ฌผ๊ณ ๊ธฐ ํ˜ธํ™˜ ๊ตฌ๋ฌธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ eval d๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. POSIX ํ˜ธํ™˜ ์…ธ(๊ทธ๋Ÿฐ ๋ฐฉ์‹์˜ bash์™€ ๊ฐ™์€)์€ ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฉฐ ๋ฐ˜๋“œ์‹œ ์„ ํƒํ•œ ์…ธ์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์œ„์˜ @sstephenson ์˜ ๋Œ“๊ธ€์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‚˜๋Š” ๋ฌผ๊ณ ๊ธฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ณ  ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋„์›€์„ ๋ฐ›์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›๋ž˜ rbenv shell ๋ช…๋ น์„ ํ˜ธ์ถœ rbenv sh-shell ๋˜ํ•œ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜, eval D๋ฅผ. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฐ˜ํ™˜๋œ ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ํ•ด๋‹น ํ˜ธ์ถœ์˜ ๋ฐ˜ํ™˜ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์„๊นŒ์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@bitboxer ํ”ผ์‰ฌ ์‰˜์€ rbenv ๋งˆ์Šคํ„ฐ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ ํ•ด์š”!

"emcmanus" ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ต์„ ์ฐพ๊ณ  ์žˆ์—ˆ๋‹ค.

"emcmanus"๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ƒ์„  ๊ป์งˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ

  • ๋ฐ๋ฒ ์ธ
  • ์šฐ๋ถ„ํˆฌ
  • ์ฟ ๋ถ„ํˆฌ
  • ํŽ˜๋„๋ผ
  • ์„ผํŠธOS
  • ๋ ˆ๋“œํ–‡ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
 vi ~/.config/fish/config.fish
 ๊ฒฝ๋กœ $HOME/.rbenv/bin $PATH ์„ค์ •
 ๊ฒฝ๋กœ $HOME/.rbenv/shims $PATH ์„ค์ •
 rbenv rehash >/dev/null ^&1

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์˜คํ”„ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์˜จํ•˜์‹ญ์‹œ์˜ค. ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•œ ๋ฒˆ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ํด๋”๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(ํŒŒ์ผ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Œ).

์ด๊ฒƒ์€ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌผ๊ณ ๊ธฐ์ž…๋‹ˆ๋‹ค.
http://fishshell.com/

@emcmanus ์™€ @sstephenson์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ^ ๊ตฌ๋ฌธ์€ ์•ž์œผ๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ผ๋ถ€ ๋ฒ„์ „์—์„œ๋Š” ์†์ƒ๋ฉ๋‹ˆ๋‹ค( ์—ฌ๊ธฐ์—์„œ ์ด ๋ฌธ์ œ ์ฐธ์กฐ ).

๋”ฐ๋ผ์„œ rbenv rehash >/dev/null >2&1 ๊ตฌ๋ฌธ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ rbenv rehash >/dev/null >2&1 ๊ตฌ๋ฌธ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

2 ์˜คํƒ€๊ฐ€ ์žˆ๊ณ  > ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

rbenv rehash >/dev/null 2>&1
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰