expand.h
:
/** Character for separating two array elements. We use 30, i.e. the ascii record separator since that seems logical. */
#define ARRAY_SEP 0x1e
/** String containing the character for separating two array elements */
#define ARRAY_SEP_STR L"\x1e"
๊ทธ ๊ฒฐ๊ณผ:
xiaq<strong i="10">@blackie</strong> ~> set a (printf 'a\x1eb')
xiaq<strong i="11">@blackie</strong> ~> count $a
2
xiaq<strong i="12">@blackie</strong> ~> set a (printf 'a\x1fb')
xiaq<strong i="13">@blackie</strong> ~> count $a
1
char \x1e๊ฐ ์์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ํน๋ณํ ์ทจ๊ธ๋๋ค๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค.
\x1e๋ฅผ ํํํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฑฑ์ ์ ๋๊น? ์๋๋ฉด ์ํคํ ์ฒ ๊ฐ์ ์ ๋ํด ์๊ฐํ๊ณ ์์ต๋๊น?
๋ฐฐ์ด ๊ตฌ๋ถ์๋ ์ฃผ๋ก ๋ฒ์ฉ ๋ณ์๋ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ด ๋ฌธ์์ด๋ง ์ทจํ๋ ์์น์ ๋ฐฐ์ด์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
2012-12-12 ไธๅ2:09, "ridiculousfish" ์๋ฆผ@github.com์ ์์น :
\x1e๋ฅผ ํํํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฑฑ์ ์ ๋๊น? ์๋๋ฉด ์๊ฐํ๊ณ ์์ต๋๊น?
์ํคํ ์ฒ ๊ฐ์ ์ ๋ํด?
๋๋ ๋ ๊ฐ์ง ์ธก๋ฉด์ ๋ชจ๋ ์ผ๋์ ๋๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ๋ค. ์ ์์ ๊ฒฝ์ฐ ๋ค์์ ์๊ฐํ์ญ์์ค.
\x1e๊ฐ ํฌํจ๋ ํ์ผ ์ด๋ฆ. POSIX๋ \0 ์ด์ธ์ ๊ฒ์ ํ์ฉ๋๋ค๊ณ ๋งํฉ๋๋ค.
ํ์ผ ์ด๋ฆ์ด๋ฏ๋ก ์๋ฒฝํ๊ฒ ๊ฐ๋ฅํฉ๋๋ค. \0์ ๋ฐฐ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉํ๋ฉด
์ฝ๊ฐ ๋ ๋์ ์ ํ์ด์ง๋ง ์ด๋ ๋ ๋ฒ์งธ ๋ฌธ์ ๋ก ์ด์ด์ง๋๋ค.
์ฐ์ฝํ๊ณ ๋ช
๋ฐฑํ๊ฒ ์๋ชป๋์์ต๋๋ค.
๋ฐฐ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ ์ฃผ๋ก ๋ฐฐ์ด์ ์ ์๋ฆฌ์ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฒ์ฉ ๋ณ์ ๋๋ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ๋ฌธ์์ด๋ง ์ฌ์ฉํฉ๋๋ค.
์ง์์ด "์ง๋ ฌํ"๋ฅผ ์๋ฏธํ๋ ๊ฒฝ์ฐ ์๋์. ๋ฐฐ์ด์ ํญ์ ๋ค์ ์์น์ ์ ์ฅ๋ฉ๋๋ค.
\x1e๋ก ๊ตฌ๋ถ๋ ํ์์
๋๋ค. ๋ด๋ณด๋ธ ํ๊ฒฝ ๋ฐฐ์ด์ ":"๋ก ๊ฒฐํฉ๋ฉ๋๋ค. ๊ทธ๋ค
๊ทธ๋ฌ๋ IMHO๋ฅผ ๊ตฌํํด์ผ ํ๋ ๋ฒ์ฉ ๋ณ์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋์ ์ ์ ํ ํ์ถ๋ก.
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
๊ฐ์ธ์ฉ ์์ญ ๋ฌธ์๋ฅผ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๋ฌผ๊ณ ๊ธฐ๋ ์ด๋ฏธ ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ทธ ์ค ์ผ๋ถ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@JanKanis ๋ ์ข์ง ์์ต๋๋ค. ํ์ผ ์ด๋ฆ(๋น utf8, ๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ ํ์ผ ์์คํ ๊ณ ๋ ค) ๋ฐ ๊ธฐํ ๋ฌธ์์ด์์ ์๋ฒฝํ๊ฒ ๊ฐ๋ฅํฉ๋๋ค.
๋๋ ๋ฌด์๋ณด๋ค๋ "\0"
๊ฐ _์ฝ๊ฐ_ ๋ ๋์ ์ ํ์ด๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. UNIX๊ฐ ํ์ผ ์ด๋ฆ์์ ๊ธ์งํ๋ ์ ์ผํ ๋ฌธ์์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๋์๊ฒ ๋์ ๋์๊ฐ ๋ฉ๋๋ค. ๋ํ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ฐฐ์ด์ ๋ง์ ๋ถํ ๋ฐ ์กฐํฉ์ ์ํํ๊ณ ์์ผ๋ฏ๋ก ์ค์ ๋ฐฐ์ด์ ๊ตฌํํ๋ฉด ์ํคํ
์ฒ๊ฐ ๊ฐ์ ๋๊ณ ์ฝ๋๊ฐ ์ค์ด๋ค ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
Fish๋ ์ธ๋ถ ๋ฌธ์์ด์ wchar๋ก ์ธ์ฝ๋ฉํ ๋ ์ด๋ฏธ ๊ฐ์ธ์ฉ ๋ฌธ์์ ์ ํจํ์ง ์์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ํน์ ๊ฐ์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ์ถ๋ ฅ ์ ๋ค์ ๋์ฝ๋ฉํ๋ ํน์ ๊ฐ์ธ์ฉ ๋ฌธ์ ์งํฉ์ผ๋ก ๋ฐ์ดํธ ๋จ์๋ก ์ธ์ฝ๋ฉ๋๋ฏ๋ก ์์น์ ์ผ๋ก ๋ค๋ฅธ ๊ฐ์ธ์ฉ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ซ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. fish์ fishd ์ฌ์ด์ ํต์ ์ด utf8 ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ์์ผ์ ํตํด ๋ฐ์ํ๊ณ fish๊ฐ ๋ฐฐ์ด ํญ๋ชฉ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ด์ค์ผ์ดํ ์ํ์ค "\x1e"(0x1e ๋ฐ์ดํธ๊ฐ ์๋)๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ ํ ๊ฐ์ง ๋ณต์กํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฅผ ๋ค์ด ๊ฐ์ธ์ฉ ์ฌ์ฉ๋์ง ์์ ์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋๋ xiaq์ ์ฐ๋ ค๋ฅผ ๊ณต์ ํ์ง๋ง (์ค์ ์ ์ธ ๊ฒ์ ๊ฒฝ์ฐ) ์๋ฌต์ ์ธ ๋ถํ ์ด \n ํจ์ฌ ๋ ๊ณต๊ฒฉ์ ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค.
a<strong i="6">@raspeball</strong> ~> count (printf 'a\x1eb')
1
a<strong i="7">@raspeball</strong> ~> count (printf 'a\nb')
2
ํ์ ํ๋ก์ธ์ค ์ถ๋ ฅ์ (๊ฐํ์ผ๋ก ๊ตฌ๋ถ๋) ๋ฐฐ์ด ํด์์ ๋ช ์์ ์ด๊ณ ์ ํ ์ฌํญ์ด์ด์ผ ํฉ๋๋ค!
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์๋ง๋ ์ด๋ ์ด์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง์ ์๋ฌด ๊ด๋ จ์ด ์์ ๊ฒ์ ๋๋คโฆ
@xiaq : \0
์(๋ฅผ) ์ฌ์ฉํ๋ ๋ฐ ์ด๋ค ๋ฌธ์ ๊ฐ ์์ต๋๊น? xargs
๋ ๊ทธ๊ฒ์ "์ ๋ขฐํ ์ ์๋" ์ต์
์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๊ฒฝ ๋ณ์์ \0
๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ฐฐ์ด์ ์์ ์
ธ๋ก ๋ด๋ณด๋ด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ ๋ ์ด ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ "์ฐ๊ฒฐ๋" ๋ณ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ์์ ์ธ ๋ฐฉ์์ผ๋ก $LESS env var๋ฅผ ์ ์ํ๋ zsh์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ต๋๋ค.
typeset -xT LESS less ' '
less=(
--HILITE-UNREAD
--LONG-PROMPT
)
๊ฐ๊ฒฐํจ์ ์ํด ์ ์ฒด ์ต์ ๋ชฉ๋ก์ ์๋ตํ์ต๋๋ค. zsh์์ $LESS env var๋ $less ๋ฐฐ์ด์ ์๋ ์ต์ ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ด ๋ฉ๋๋ค. ๋ฌผ๊ณ ๊ธฐ์ ํด๋นํ๋ ํญ๋ชฉ์ ๋ ์ฝ๋ ๊ตฌ๋ถ ๊ธฐํธ(\x1e) ๋ฌธ์๋ก ์์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ๋ฐฐ์ด์ ์์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ค๋ ๋ฌธ์์๋ ๋ถ๊ตฌํ๊ณ (PATH์ ๊ฐ์ ํน์ ๋ฐฐ์ด์ ๋ชจ๋๋ก). ์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ๊ฐ์ ๋จ์ผ ๋ฌธ์์ด๋ก ๋ณด๊ฐํ๋ ํ ๋น์ ๋ช ์์ ์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
set -x LESS --HILITE-UNREAD \
--LONG-PROMPT
set LESS "$LESS"
ํ์ฌ๋ก์๋ \x1e๊ฐ \x00์ด ์๋ ๋ฐฐ์ด์ ์ง๋ ฌํํ๋ ๋ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋์ง ์ฌ๋ถ๋ ๋ณ๋ก ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๋ด๋ณด๋ธ ๋ฐฐ์ด์ ์์๊ฐ \x1e๋ก ๊ตฌ๋ถ๋์ด ์๋ค๋ ์ ์ ์ ์ํฉ๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ฅ ๊ณ ์ฅ๋ฌ์ด, ์๋ชป๋์ด, fubar. ํ์ฉ์ฌ๋ฅผ ์ ํํ์ธ์. ๋ํ ์์ ์ธ๊ธํ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐ ๋ฌธ์ํ๋ ๋์๊ณผ๋ ์ผ์นํ์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ฒ๊ทธ IMHO๋ก ํ๊ทธ๊ฐ ์ง์ ๋์ด์ผ ํฉ๋๋ค.
์ถ์ , ๋ฌธ์์ ์ด๋์๋ ์ธ๊ธ๋ ๋ ์ฝ๋ ๊ตฌ๋ถ ๋ฌธ์(\x1e)์ ์ฌ์ฉ์ด ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค.
@krader1961 ๊ณต์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ชฉ๋ก๊ณผ ๊ฐ์ ํ๊ฒฝ ๋ณ์์ ๋ํ ํ์ค Unix ๊ท์น์ ์์ต๋๋ค. ์ผ๋ถ๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋๊ณ ๋๋จธ์ง๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๋ฌผ๊ณ ๊ธฐ๋ ์์ฒด ๋ฐฐ์ด์ ๊ตฌ๋ณํ ์ ์๋๋ก \x1e๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ชป๋ ๋ฌธ์๋ฅผ ์ง์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
์ฝ๋ก , ๊ณต๋ฐฑ, ์ค ๋ฐ๊ฟ ๋ฑ์ ๋ฐฐ์ด์ ์ด๋ป๊ฒ ๋ด๋ณด๋ผ ์ ์์ต๋๊น? ๋ฌผ๊ณ ๊ธฐ๋ ์ด ์บ๋ฆญํฐ์ ํ๊ฒฝ ๋ณ์๋ ํ ํฐํํด์ผ ํฉ๋๊น?
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ธ์๊ฐ ๋ ์์๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ง๋ ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ set -x LESS '--HILITE-UNREAD --LONG-PROMPT'
๋ฑ์
๋๋ค.
ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ๋ชฉ๋ก์ ๋ํ ํ์ค์ ์์ต๋๋ค. ์ ์์ ๋ฐ๋ผ ๋ฑํธ๋ก ๊ตฌ๋ถ๋๊ณ null ๋ฐ์ดํธ๋ก ๋๋๋ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ์์์ ๋ฐ์ดํธ ์ํ์ค์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ธ์ ๊ฐ๋ฅํ ๋ฌธ์์ผ ํ์๋ ์์ต๋๋ค. ๋ ๋์ ์์ค์ ์ถ์ํ์ ๋ํด ๋๋ฆฌ ์ธ์ ๋๋ ์ ์ผํ ๊ท์น์ PATH ํ๊ฒฝ ๋ณ์์ ๋ํ execlp() ํจ์์ ์ํด ์ค์ ๋ ๊ฒ์ ๋๋ค.
๋ ์ด์์ ์์๊ฐ ์๋ var๋ฅผ ๋ด๋ณด๋ผ ๋ ๋ฐฐ์ด์ ์์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด \x1E, \036, 30 ๋๋ "๋ ์ฝ๋ ๊ตฌ๋ถ ๊ธฐํธ" ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์ธ๊ธ์ด ์๋ ํ ๋ฌธ์๋ ์๋ชป๋ ๊ฒ์ ๋๋ค. ๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ ์์ต๋๋ค.
..., and array variables will be concatenated using the space character.
http://fishshell.com/docs/current/index.html์ "๋ณ์ ํ์ฅ" ์น์ ์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค. ๋์ผํ ๋ฌธ์์ "๋ฐฐ์ด" ๋ฐ "ํน์ ๋ณ์" ์น์ ์ ์ค๋ช ๋ ๋๋ก ํน์ ์ฌ๋ก๊ฐ ์๋ ๋ด๋ณด๋ธ ๋ณ์์๋ ํด๋น ๋ช ๋ น๋ฌธ์ด ์ ์ฉ๋๋ค๊ณ ์ถ๋ก ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
๋ฌผ๊ณ ๊ธฐ๊ฐ ์๋์ผ๋ก env ๋ณ์๋ฅผ PATH์ ๊ฐ์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ํน์ ์ผ์ด์ค ๋ณ์ ์ธ๋ถ์ ๋ชฉ๋ก์ผ๋ก ํ ํฐํํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ var๋ฅผ ์์์ ๋ฌธ์์ ๋ํ ๋ฐฐ์ด๋ก ํ ํฐํํ ์ ์๋ ๊ฐ๋ ฅํ ์๋จ์ด ์์ด์ผ ํฉ๋๋ค.
var ๊ธฐ๋ฐ์ผ๋ก var์ ์ฌ์ฉํ ๋ฌธ์๋ฅผ ๊ตฌ์ฑํ๋ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉด(zsh "typeset -T" ๋ช ๋ น) ๋ฐฐ์ด์ ์์๋ฅผ ์ฐ๊ฒฐํ ๋ ๊ณต๋ฐฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(๋ค์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ํน์ ์ผ์ด์ค var ์ ์ธ ). ๋ถ๋ช ํ ์ด๊ฒ์ ๋ฒ์ฉ ๋ณ์์ ์ ์ฅ๊ณผ ๊ฐ์ ๊ฐ์ธ ๋ฐ์ดํฐ ์ ์ฅ์์๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก env var๊ฐ ํ๋ ์ด์์ ์์๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ ๋ค๋ฅธ ํจ์๋ ์คํฌ๋ฆฝํธ์ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ์ค ๋ฌผ๊ณ ๊ธฐ ํจ์์์ ์ฉ๋๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ ์ ์์ง๋ง ๋ฌธ์์ด์ ๋ ์ฝ๋ ๊ตฌ๋ถ ๋ฌธ์๊ฐ ํฌํจ๋ var์์ ๋ฐฐ์ด์ ์์์ ์ผ๋ก ์ฌ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ฌผ๊ณ ๊ธฐ์ ์์กดํ๊ธฐ ๋ณด๋ค๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ฐ์ดํฐ์ ์ง๋ ฌํ/์ญ์ง๋ ฌํ์ ๋ช ์์ ์ผ๋ก ํ๋ ฅํด์ผ ํฉ๋๋ค.
์ฌ๋ ค ๊น์ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ณต๋ฐฑ์ ์ฌ์ฉํ ์ฐ๊ฒฐ์ ๋ํด ์ธ์ฉํ ์น์ ์ ํนํ ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ธ ๋ฌธ์์ด์ ์ํ ๊ฒ์ ๋๋ค. ๋ด๋ณด๋ธ ๋ฐฐ์ด์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง์ ๋ํ ๋ ผ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์๋ set SOMEPATH (string split : $SOMEPATH)
์ ๊ฐ์ด ๋ฌธ์์ด์ ํ ํฐํํ ์ ์์ต๋๋ค.
๊ณต๊ฐ ์ฐ๊ฒฐ ๋ด๋ณด๋ธ ๋ณ์์ ๋จ์ ์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ์ฌ๊ท์ ์ผ๋ก ์คํ๋ ๋ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ค๋์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
> set -x list 1 2 3
> count $list
3
> fish -c 'count $list'
3
๊ทธ๋ฌ๋ ๊ณต๋ฐฑ๊ณผ ํจ๊ป ๋ด๋ณด๋ด๋ฉด ์ฌ๊ท ํธ์ถ์ ๋ํด 1์ด ํ์๋ฉ๋๋ค. ๋น์ ์ด ๋งํ๋ฏ์ด ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์์กดํ์ง ์์ง๋ง ์ผ๊ด์ฑ ๊ด์ ์์๋ ์ข์ต๋๋ค.
์ฌ๋ ค ๊น์ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ ๋ฒ์งธ๋ก ํด์ผ ํฉ๋๋ค! ํญ์ ์๋ก์ด ๊ด์ ์์ ์ฌ๋ฌผ์ ๋ฐ๋ผ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ํ ๋ก ์ ์ฒ์ ์ ํ๋ ๋ถ๋ค์ ์ํด ์ ๋ ์ด๊ฒ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๊ฐ์ ธ์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฆ์ ๋ง์์ ๋ ์ค๋ฅด๋ ๊ฒ์ #2090๊ณผ ๊ฐ์ ๋ฌธ์ ์ ๋ํ๋๋ listify ํ์ดํธ๋ฆฌ์คํธ ์ ๋๋ค.
์ด๊ฒ์ $PATH, $CDPATH ๋ฐ $MANPATH์ ๊ฒฝ์ฐ ๋ฌผ๊ณ ๊ธฐ์ ๋ํ ๋ชฉ๋ก/๋ฐฐ์ด๋ก ๋ํ๋์ง๋ง ๋ด๋ณด๋ผ ๋ ":"์ ๋ค์ ๊ฒฐํฉ๋จ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฌผ๊ณ ๊ธฐ ์์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๊ทธ๋ค์ ๋ค์ ์ชผ๊ฐค ๊ฒ์ ๋๋ค. ์ด๊ฒ์ \x1e๊ฐ ์๋ ์ฝ๋ก ์์ ์๋ํฉ๋๋ค. ์ฝ๋์ ๋ํ ๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ์ด์ค์ผ์ดํํ ๊ธฐํ๊ฐ ์๋ ๋ชจ๋ ์ฝ๋ก ์์ ์ํํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก ๋ด๋ถ์ ์ฝ๋ก ์ด ์๋ $PATH ํญ๋ชฉ์์ ์ค๋จ๋ ์ ์์ต๋๋ค. UNIX์์๋ ํ์ผ ๊ฒฝ๋ก ๋ด๋ถ์์ ํ์ฉํ์ง๋ง ์ ์ด๋ $PATH์ ๋ํด์๋ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค . . ์ด ์ฒด๊ณ๋ PYTHONPATH ๋ฐ GOPATH์๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋๋ ์์์ always-split-on-\x1e-except-for-se-three-split-them-on-colon๋ณด๋ค ํ๊ฒฝ ๋ณ์ ๋ถํ ์ ๋ํด ์ฝ๊ฐ ๋ ๋ช ์์ ์ธ ๊ฒ์ ์ํฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ ์ค์ ๋ก ๋ ๊ฐ์ ๋ค๋ฅธ ์ฒด๊ณ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ฌ ๋ชฉ๋ก์ ๋ด๋ณด๋ด๋ ๊ฒ์ ํญ์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ๊ฒ์ ํผ๋ํฉ๋๋ค.
๋ด๊ฐ ์ ํธํ๋ ์๋ฃจ์
์ splitenv var1 var2 var3
์ ๊ฐ์ ๊ธฐ๋ฅ์
๋๋ค.
function splitenv --no-scope-shadowing
set -e IFS # string split doesn't have superpowers, so unset IFS lest we split on both : and \n
for arg in $argv
set -q $arg; and set $arg (string split ":" $$arg)
end
end
( string split
์ ์ด๋ฅ๋ ฅ ์ด ์๋ค๋ฉด ์ด๊ฒ์ ์กฐ๊ธ ๋ ๊ฐ๋จํ ๊ฒ์
๋๋ค)
๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๋ชฉ๋ก์ ๋ด๋ณด๋ผ ๋ ์ฝ๋ก ์ผ๋ก ๊ฒฐํฉ๋๋ฏ๋ก ์ฌ์ฉ์๋ splitenv
๋ฅผ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ผ๋ก ๋ชฉ๋ก์ ๊ฒฐํฉ ํด์ ํ ์ ์์ต๋๋ค. ํด์ผ ํ ์ผ). ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํด ์์ ์ splitenv PATH CDPATH MANPATH
๊ฐ ์คํ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ค๋ฅด๊ฒ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ string join
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ ์ด์ \x1e๋ฅผ ํ์๋ก ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ ์ด๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ์ดํด๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ณํ์ ๊ฐ์ง๊ณ ์์ง๋ง (๋ค์ ์ด๊ตญ์ ์ธ IMHO) fish-in-side-fish๋ ์ด์ fish -c 'splitenv list; count $list'
๊ฐ ๋ฉ๋๋ค. .
๋ฌธ์ ๋ ๋ฌผ๋ก ์ธ๊ธํ๋ฏ์ด ์ผ๋ฐ์ ์ธ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก ์ฒด๊ณ์๋ ์ฝ๋ก ์ ์ด์ค์ผ์ดํํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ ์ฝ๋ก ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ string split
์ "--unscaped"๊ฐ ์์ต๋๋ค. ์ด์ค์ผ์ดํ๋์ง ์์ ๊ตฌ๋ถ ๊ธฐํธ์์๋ง ๋ถํ ํ๋ ์ต์
์
๋๋ค.
๋ด๊ฐ ์๋ฏธ๊ฐ ์์ต๋๊น?
@faho ๊ทธ ์์ด๋์ด๋ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ๋ฐฉ์์ ์ต์ ์ ๋ถ๋ถ์ ์์์ ์ผ๋ก ์ฝ๋ก ์์ ๋ถํ ๋์ด ๋ถํ ๋์ด์๋ ์ ๋๋ ๋ณ์๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค์์ต๋๋ค. ๊ทํ์ ์๊ฐ์ ์ด๊ฒ์ (๊ฑฐ์) ํญ์ ๋ช ์์ ์ด๋ฏ๋ก ๋งค์ฐ ์์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ค์ผ์ดํ์ ๊ด๋ จํ์ฌ PATH์์ ์ฝ๋ก ์ ์ด์ค์ผ์ดํํ์ง ์๋ ๊ฒ์ ์ฐพ์ ๋งํฌ์ ๋ฐ๋ผ ์๋์ ์ ๋๋ค. ๋๋ PYTHONPATH, CLASSPATH ๋ฑ์ด ์ด์ ๊ด๋ จํ์ฌ ๋ ์ผ๊ด์ฑ์ด ์๋์ง ์์ฌํฉ๋๋ค. ์ด ๊ฒฝ๋ก์๋ ์ฝ๋ก ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ ์ฌ๋ถ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋ก ์ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ ๋ฐฑ์ฌ๋์๋ฅผ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌํด์ผ ํ๋ฉฐ PATH์ ๋ฐฑ์ฌ๋์๊ฐ ์์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ "๋ํผํ์ง ๋ง๋ผ"๋ ํ์ดํธ๋ฆฌ์คํธ๊ฐ ํ์ํ ์๋ ์์ต๋๋ค(uh).
๋๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ์ฝ๋ก ์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ๋๋ ๋จ์ํจ๊ณผ ๋ค๋ฅธ ์๊ณผ์ ์น์ํจ์ ์ํด ์ด๊ฒ์ ๊ธฐ๋๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ผ๋ถ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๋ณ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๊ณ ๋ค๋ฅธ ๋ณ์๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋๋ค๋ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ํ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ splitenv
๊ฐ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ํ์ฉํ๊ณ ๊ธฐ์ตํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ณด๋ผ ๋ ๊ฐ์ ๋ค์ ์์ฑํ๋ ๊ฒ์
๋๋ค.
splitenv --on ' ' LESS
splitenv --on ':' PYTHONPATH
์ด๋ฌํ ํธ์ถ์ ์ด์ ๊ธฐ์กด ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณ์๋ฅผ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ํ์ํ๋ ์ด์ค ์ญํ ์ ํฉ๋๋ค. ์ด๋ป๊ฒ ์๊ฐํด?
๋ํ config.fish๋ฅผ ํธ์งํ์ง ์๊ณ ์ด ์์ ์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์๋ง๋ ๋ฒ์ฉ ๋ณ์์ ์ผ๋ถ๋ก?
์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ผ๋ถ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๋ณ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๊ณ ๋ค๋ฅธ ๋ณ์๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋๋ค๋ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ํ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ splitenv๊ฐ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์๋ฝํ๊ณ ๊ธฐ์ตํ๊ณ ๋ด๋ณด๋ผ ๋ ๊ฐ์ ๋ค์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ ๋ค๋ฆฐ๋ค. ๊ทธ ์์ ์์ splitenv๋ฅผ ์คํฌ๋ฆฝํธ๋ก ๋ง๋๋ ๊ฒ์ ์๋ง๋ ๋์์ด ๋์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ์ด์จ๋ C++ ์ธก์ ํ๋ ฅ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ํธ์ถ์ ์ด์ ๊ธฐ์กด ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณ์๋ฅผ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ํ์ํ๋ ์ด์ค ์ญํ ์ ํฉ๋๋ค.
์ด์ "splitenv"๊ฐ ๋ ์ด์ ์๋ฒฝํ ์ด๋ฆ์ด ์๋ ์๋ ์์ต๋๋ค. (๋น์ฐํ ์๊ฐํ์ ๋์์ต๋๋ค.์์: ) - "listify"๋ ๊ณ ๋ คํ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ ์ ์ด๋์ ๊ด๋ จ ํ ๋ก ์ ํ๋์ง ๊ธฐ์ต์ด ๋์ง ์๋๋ค๋ ๊ฒ์ด ๋๋ฅผ ๊ดด๋กญ๊ฒ ํ์ง๋ง - ๋ด ์๊ฐ์ ๋๋ ์ค๋ ๋ฐค ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์กฐ์ฌํด์ผ ํ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค.
์ฌ์ฉ์๋
set SOMEPATH (string split : $SOMEPATH)
์ ๊ฐ์ด ๋ฌธ์์ด์ ํ ํฐํํ ์ ์์ต๋๋ค.
string
๋ช
๋ น์ ๋ด๊ฐ ์ฐพ์ ์ ์๋ ์ด๋์๋ ๋ฌธ์ํ๋์ด ์์ง ์์ต๋๋ค. ๋ํ man string
๋ BSD(๋ฐ Mac OS X)์์ ๋ฌธ์์ด ์กฐ์ ๊ธฐ๋ฅ์ ๋ฌธ์ํํ string(3) ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๊ทธ๋ฌ๋ ๊ณต๋ฐฑ๊ณผ ํจ๊ป ๋ด๋ณด๋ด๋ฉด ์ฌ๊ท ํธ์ถ์ ๋ํด 1์ด ํ์๋ฉ๋๋ค. ๋น์ ์ด ๋งํ๋ฏ์ด ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์์กดํ์ง ์์ง๋ง ์ผ๊ด์ฑ ๊ด์ ์์๋ ์ข์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ ํ๋์ ๋๋์ต๋๋ค. 100๋ช
์๊ฒ ๋ ์ด์์ ์์๊ฐ ์๋ var๋ฅผ ๋ด๋ณด๋ผ ๋ ์ด๋ป๊ฒ ๋๋์ง ๋ฌป๋๋ค๋ฉด ๊ทธ ์ค 90๋ช
์ ๊ฐ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ก ๊ณต๋ฐฑ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๋งํ ๊ฒ์
๋๋ค. ๋ช๋ช ์ฌ๋๋ค์ ์ผํ๋ ๋ค๋ฅธ ๋ฌธ์๊ฐ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉ๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. env
๋ฅผ ์คํํ ๋ ์ฌ๋์ cat -evt
์ ๊ฐ์ ๊ฒ์ ํตํด ์ถ๋ ฅ์ ํํฐ๋งํ์ง ์๋ ํ ๋ ์ฝ๋ ๊ตฌ๋ถ ๋ฌธ์๊ฐ ๋ณด์ด์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ๊ตฌ๋ถ ๊ธฐํธ ์์ด ์ฐ๊ฒฐ๋์๋ค๊ณ ๋งํ ๊ฒ์
๋๋ค.
#2090๊ณผ ๊ฐ์ ๋ฌธ์ ์ ํ์๋ฉ๋๋ค.
์ฃ์กํฉ๋๋ค๋ง ํด๋น ์ฌ์ฉ์์ ๋ถ๋ง ์ฌํญ์ด ํ๋นํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฌธ์ ๋ MANPATH๊ฐ ์ด๋ฏธ ์ค์ ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ช ์์ ์ผ๋ก ํ ์คํธํ์ฌ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋ฉ๋๋ค. ์ ์๊ฐ์๋ ์ ํ ์ฝ๋ก ๊ณผ ํํ ์ฝ๋ก ์ ์๋ฏธ๋ฅผ ๊ณ ๋ คํ ๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ํํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ๋ด๋ถ์ ์ฝ๋ก ์ด ์๋ $PATH ํญ๋ชฉ์์ ์ค๋จ๋ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ๊ณ ์น๊ธฐ์๋ ์ ์ด๋ ์ผ์ญ๋ ์ ๋ฆ์๋ค. ์ฝ๋ก ์ ์ด์ค์ผ์ดํ(๋ฐ ํ์ฅํ์ฌ ์ด์ค์ผ์ดํ ๋ฌธ์)๋ฅผ ๊ตฌํํด์๋ ์ ๋ฉ๋๋ค. ์ด๋ ๋นํ์ค ๋์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ต๊ทผ๊น์ง ์ ๋ UNIX ์ง์ ์ ๋ฌธ๊ฐ๋ก 20๋ ์ด์์ ๋ณด๋์ต๋๋ค. $PATH ๋๋ ์ ์ฌํ ๋ณ์์ ํฌํจ๋ ๋๋ ํ ๋ฆฌ์ ์ฝ๋ก ์ด ์๋ ๊ฒ์ด ๋ฌธ์ ๋ผ๊ณ ๋ถํํ๋ ์ฌ๋์ ๋ณธ ์ ์ด ์์ต๋๋ค.
๋ด๊ฐ ์ ํธํ๋ ์๋ฃจ์ ์ splitenv var1 var2 var3๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋๋ค.
(๋ฌธ์ํ๋์ง ์์) string split
๊ฐ ์ถฉ๋ถํ์ง ์์ ์ด์ ๋ ๋ถ๋ช
ํ์ง ์์ง๋ง ๊ด์ฐฎ์ต๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ด ํ์ํ์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์๋ก์ด ์๋ ๋ถํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํด์๋ ์ ๋ฉ๋๋ค. ๋์์ ๋ณด์ฆํ ๋งํผ ์ถฉ๋ถํ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง๋ PATH์ CDPATH(๋ฐ ์ด๋ฏธ ํน์ ์ฌ๋ก์ด๋ฏ๋ก MANPATH)์
๋๋ค. PYTHONPATH์ ๊ฐ์ ๋ค๋ฅธ ๋ณ์๋ ์ฌ์ฉ์๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ ๋ช
์์ ์ผ๋ก ๋ถํ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฃผ์ด์ง var(์: PYTHONPATH)์ ๋ด๋ณด๋ผ ๋ ์์๊ฐ ํน์ ๊ตฌ๋ถ ๊ธฐํธ ๋ฌธ์์ ์ฐ๊ฒฐ๋์ด์ผ ํจ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ด ๋ถ๋ช
ํ ์์ด์ผ ํ๋ค๊ณ ๋งํ์ต๋๋ค. ์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ set
๋ช
๋ น์ ๋ํ ์ ์ต์
์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด,
set -x -S ':' PYTHONPATH dir1 dir2 dir3
์ด๊ฒ์ ๋ ์ฝ๋ ๊ตฌ๋ถ ๊ธฐํธ char๊ฐ ๊ณ์ ์ฌ์ฉ๋๋ ๋ฒ์ฉ var ๋ฐ์ดํฐ ์ ์ฅ์์ var๊ฐ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น์ง ์์ผ๋ฉฐ ํด๋น ๋ฐ์ดํฐ ์ ์ฅ์์์ ๋ก๋๋ ๋ ์๋ ๋ถํ ๋ฉ๋๋ค. ๊ฒฐ์ ํด์ผ ํ ๊ฒ์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ํด ๋ฑ๋ก๋ ๊ตฌ๋ถ ๊ธฐํธ ๋ฌธ์๊ฐ ๋ฌธ์์ด ๋ณด๊ฐ์๋ ์ํฅ์ ์ฃผ์ด์ผ ํ๋์ง ์ฌ๋ถ์ ๋๋ค. ์ ๋๋์ ๊ทธ๋์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ์์ "set" ๋ช ๋ น์ด ์คํ๋๋ฉด ํ์
echo "PYTHONPATH is $PYTHONPATH"
PYTHONPATH ๊ฐ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ณต๋ฐฑ ๋์ ์ฝ๋ก ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ ๊ธฐ์กด ์๋ฏธ๋ฅผ ๋ณด์กดํ๊ณ ์ฌ์ฉ์์ ๋๋ผ์์ ์ต์ํํ๊ธฐ ์ํ ๊ณต๊ฐ์ ๋๋ค. PATH์ ๊ฐ์ ํน์ํ ๊ฒฝ์ฐ์ vars๋ ํด๋น ์์์ ์ฝ๋ก ์ ์ฌ์ฉํฉ๋๋ค. ํ์ฌ ๋์๊ณผ ํธํ๋์ง ์์ง๋ง ์๋ก์ด ์๋ฏธ์ ์ผ์นํ๊ณ ๋ ๋๋์ต๋๋ค. ์ฆ, ๋ด๋ณด๋ธ ํ๊ฒฝ์์๋ $PATH์ ์์๊ฐ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋์ง๋ง ์ถ๋ ฅ์์๋ ๊ณต๋ฐฑ์ธ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?
echo "PATH is $PATH"
string ๋ช ๋ น์ ๋ด๊ฐ ์ฐพ์ ์ ์๋ ๊ณณ ์ด๋์๋ ๋ฌธ์ํ๋์ด ์์ง ์์ต๋๋ค. ๋ํ man string์ BSD(๋ฐ Mac OS X)์์ ๋ฌธ์์ด ์กฐ์ ๊ธฐ๋ฅ์ ๋ฌธ์ํํ string(3) ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ง์ ํด, ํธ๋์ด. ๊ฐ๋ฐ ๋ฒ์ ์ ์์ต๋๋ค - https://github.com/fish-shell/fish-shell/blob/master/doc_src/string.txt ์ฐธ์กฐ
(๋ฌธ์ํ๋์ง ์์) ๋ฌธ์์ด ๋ถํ ์ด ์ถฉ๋ถํ์ง ์์ ์ด์ ๋ ๋ถ๋ช ํ์ง ์์ง๋ง ๊ด์ฐฎ์ต๋๋ค.
๋ด ์๋ ์์ด๋์ด๋ ํธ์ ๊ธฐ๋ฅ์ด๋ฏ๋ก ์ด ์์
์ด ์์ ํ ์ฌ์ํด์ง๋๋ค. @ridiculousfish ์ ์ ์์ผ๋ก ๊ทธ๊ฒ์ ๋ ๋ง์ ๊ฒ์ด ๋๊ณ ์ด๋ค ์ข
๋ฅ์ ์ ์ฅ์๋ฅผ ์กฐ์ ํ์ฌ ๋ด๋ณด๋ผ ๋ ๋ณ์๋ ํด๋น ๋ฌธ์์ ๊ฒฐํฉ๋ฉ๋๋ค. string split
๋ ๋ฌธ์์ด์ ๋ถํ ํ๋ ๋ช
๋ น์ผ ๋ฟ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก cut
๋ฒ์ ์
๋๋ค.
์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ set ๋ช ๋ น์ ๋ํ ์ ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์๋ฏธ๋ก ์ ๋ํด ์์ ํ ํ๋ฆฌ์ง๋ ์์์ง๋ง ๊ทธ๊ฒ์ ๋ ๋ค๋ฅธ ์ต์
์
๋๋ค. ์: set -S ':' PYTHONPATH
. ๊ทธ๋ฌ๋ฉด PYTHONPATH๊ฐ ๋น ๋ชฉ๋ก์ผ๋ก ์ค์ ๋ฉ๋๊น ์๋๋ฉด ๊ธฐ์กด PYTHONPATH๋ง ๋ถํ ๋ฉ๋๊น? ์ง๊ธ๊น์ง ๋ชจ๋ ์ค์ ์ต์
์ด ์ ์๋ฅผ ์ํํ์ผ๋ฏ๋ก set -S ':' PYTHONPATH $PYTHONPATH
๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๋ ๊ฒ ํ์ง _์๋๋ก_ ํ๊ณ ๋์ผํ ๋๊ตฌ ๋ด์์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฆ, ๋ด๋ณด๋ธ ํ๊ฒฝ์์๋ $PATH์ ์์๊ฐ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋์ง๋ง
echo "PATH is $PATH"
์ ์ถ๋ ฅ์์๋ ๊ณต๋ฐฑ์ธ ์ด์ ๊ฐ ๋ฌด์์ ๋๊น?
๊ทธ๊ฒ์ ์ค์ ๋ก ์ข์ ์ง๋ฌธ์
๋๋ค. ๋ฌผ๋ก for p in $PATH; echo $p; end
์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ํ์๋ ๊ฒ์ผ๋ก ์์ํ์ง๋ ์์ง๋ง ๋ณ์๋ณ ๊ตฌ๋ถ ๊ธฐํธ char ์ ๊ฒฐํฉํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค. ๋ฌผ๋ก ์๋์ผ๋ก ์ํํ๋ string join
๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ ํ๋์ ๋๋์ต๋๋ค. 100๋ช ์๊ฒ ๋ ์ด์์ ์์๊ฐ ์๋ var๋ฅผ ๋ด๋ณด๋ผ ๋ ์ด๋ป๊ฒ ๋๋์ง ๋ฌป๋๋ค๋ฉด ๊ทธ ์ค 90๋ช ์ ๊ฐ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ก ๊ณต๋ฐฑ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๋งํ ๊ฒ์ ๋๋ค.
์ค๋ฌธ ์กฐ์ฌ ๋ฐ ๋ฌผ๊ณ ๊ธฐ์ ์ํ ์ค๊ณ๋ฅผ ์ํํ๋ ๋ฐ๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค๋ฌธ์ ์ํ ์ฌ๋๋ค์ bash(๋ฐ ๋ค๋ฅธ POSIXy ์)์ ๋ํ ์ง์์ ์์ฃผ ๊ฐ๊ณ ์๋ ๋ฐ๋ฉด ๋ฌผ๊ณ ๊ธฐ์ ๋ํ ์์ด๋์ด๋ POSIX์ ์ผ๋ถ๋ฅผ ๋ฒ๋ ค์ _๋ ๋์_ ์ผ์ ํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๊ฒ์ด ์์ ํ ๋ฌด๊ฐ์นํ๋ค๋ ๊ฒ์ ์๋๋๋ค. ๋จ์ง ์ผ๋์ ๋์ด์ผ ํ ์ฌํญ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ฌํ ์ข ๋ฅ์ ์์ด๋์ด๋ฅผ ๊ณ ์ํ๋ค๋ฉด ์ฐ๋ฆฌ๋ bash์ ๋จ์ด ๋ถ๋ฆฌ ๋์๊ณผ if-fi๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
set -S ':' PYTHONPATH
๋ PYTHONPATH๋ฅผ ๋น ๋ชฉ๋ก์ผ๋ก ์ค์ ํฉ๋๊น ์๋๋ฉด ๊ธฐ์กด PYTHONPATH๋ง ๋ถํ ํฉ๋๊น?
๋น ๋ชฉ๋ก์ผ๋ก ์ค์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ธฐ์กด ๊ฐ์ ์ ์งํ๋ ค๋ฉด ๋ช ์์ ์ผ๋ก ํฌํจํด์ผ ํฉ๋๋ค(์๋ ์ฐธ์กฐ).
๋ด๋ณด๋ด๊ธฐ ๋๋ ๋ณด๊ฐ์ ์ํด ์ง์ ๋ var์ ๋ฐฐ์ด ์์๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ ๋ฌธ์(๋๋ ๋น ๋ฌธ์์ด)๋ฅผ ๊ตฌ์ฑํ๋ ์๋จ์ ์ ์ธํ๊ณ ๋ ์ด๋ฏธ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ PYTHONPATH์ ๊ฐ์ var๋ฅผ ์กฐ์ํ๋ ค๋ ๊ฒฝ์ฐ ๊ฐ๋จํ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
set PYTHONPATH "/a/new/dir:$PYTHONPATH"
๋๋ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
set -S ":" PYTHONPATH /a/new/dir (string split ":" $PYTHONPATH)
๋ฌธ์์ด๋ก ์ฝ์ ํ ๋ ๊ณต๋ฐฑ ๋์ ๋ถํ /์ฐ๊ฒฐ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์๋ ์ ์ ์์ ์ฌ์ฉ์๊ฐ var๋ฅผ ๋ฐฐ์ด๋ก ๋ถํ ํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋์์ ์ ๊ณตํฉ๋๋ค.
๋๋ ํ์คํ ์์ํ์ ์ํด ๋์์ธ์ ์ ์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฐ ์์ผ๋ก zsh์ ๊ฐ์ ๊ด๊ธฐ์ ๊ฑฐ์ง์ด ์์ต๋๋ค. ๋๋ ๋จ์ํ ๋ ์ด์์ ์ต์ ์ด ์ฃผ์ด์ก์ ๋ ํ๋๋ฅผ ์ ํํ ๋ค๋ฅธ ์ด์ ์์ด ์ ธ ์ฌ์ฉ์๋ฅผ ์ต์ํ์ผ๋ก ๋๋ผ๊ฒ ํ๋ ์ต์ ์ ์ ํํ๋ ๊ฒ์ด ์ต์ ์ ์ ํ์์ ์ง์ ํ๊ณ ์์ต๋๋ค. ๋ํ ๋ด๊ฐ (ํ์ฌ๋ก์๋) ์๋ ๋ถํ vars(๋ฌผ๋ก PATH ๋ฐ CDPATH ์ ์ธ)์ ๊ฐ์ ์๋ก์ด ๋ช ๋ น์ด๋ ๋์์ ๋์ ํ๋ ๊ฒ์ ๋ฐ๋ํ๋ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค. ์ด๊ฒ์ ๋๋ฌผ๊ฒ config.fish์ Anaconda์ "activate" ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๋ช ๊ฐ์ง ํน์ ๊ธฐ๋ฅ์์๋ง ์ํ๋๋ ์ผ์ข ์ ์์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ config.fish์์ var๋ฅผ ์ด๋ฏธ ๋ฐฐ์ด๋ก ๋ถํ ํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ํญ์ ๋ถํ ํด์ผ ํ๋ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด PYTHONPATH๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
# Hypothetical snippet from the Anaconda activate script.
if test (count PYTHONPATH) -gt 1
set -S ':' PYTHONPATH /activated/python/tree $PYTHONPATH
else
set PYTHONPATH "/activated/python/tree:$PYTHONPATH"
end
๋๋ ๋ ๊ฐ๋จํ,
# Hypothetical snippet from the Anaconda activate script.
set -S ':' PYTHONPATH /activated/python/tree (string split ':' $PYTHONPATH)
์, ์ด๋ ์ ์ฌ์ ์ผ๋ก ๋จ์ํ ๋ฌธ์์ด์ผ ์ ์๋ ๊ฒ์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ท์น์ ๋ฐ๋ฅด๋ฉด -S
์ค์์น์ ์ํด ์ง์ ๋ ๋ฌธ์๋ ํด๋น ๋ณํ์ ๋ฐฐ์ด๋ก ๋ด๋ณด๋ด๊ณ ๋ณด๊ฐํ ๋ ์ฌ์ฉ๋์ด ์ค์ ๋ก๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ ์ฝ๋ ์ผ์ด์ค๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ config.fish์์ var๋ฅผ ๋ฐฐ์ด๋ก ๋ช
์์ ์ผ๋ก ๋ณํํ์ง ์๊ณ ์์ ๊ฐ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๊ฒ์ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? var๋ ์ ์ฌ์ ์ผ๋ก ๋ค์ค ์์ ๋ฐฐ์ด์ด ๋ ์ ์์ต๋๋ค.
for elem in $PYTHONPATH
echo $elem
end
์ฌ์ฉ์๊ฐ ๊ฐ์์ "ํ์ฑํ" ์คํฌ๋ฆฝํธ์ ์ํด ์ํ๋ ๋ถํ ์ ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋๋ ํ ๋ฆฌ ํ์์ ๊ฐ์ ์ฌ์ฉํ์ฌ for ๋ฃจํ์ ๋ณธ๋ฌธ์ ํ ๋ฒ๋ง ์คํํ์ง ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ทธ๋ฐ ์ผ์ ํ๋ ๊ฒ์ ๋น๋ค์ด์ง ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ฐ์ง๊ณ ์ด ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
tl;dr ๋ด ์๊ฐ์ ๋ชฉ๋ก์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ "๊ธฐ์ต"ํด์ผ ํ๋ฉฐ ์๋๋ ๊ทธ ์ด์ ์ ๋๋ค.
๋๋ ์์ ๋๋ถ๋ถ์ ๋ง์ ๋ถ๋ถ์ ๋์ํฉ๋๋ค. ์ฌ์ ํ ์ง๋ฃจํด ๋ณด์ด๋ ํ ๊ฐ์ง๋ ์์ ๋ช ๋ น์ด ์ฌ์ ํ ์ง๋์น๊ฒ ์ฅํฉํด ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ด๋ฌํ ๋ช ๋ น ์ค ์ผ๋ถ๋ฅผ ์ผ๋ฐ ์์ด๋ก ์ค๋ช ํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด(๊ทธ๋ฆฌ๊ณ ์ ๋ ๋ฐ๋ณต๋๋ ๊ฒ๋งํผ ๊ธธ์ด์ ์ด์ ์ ๋ง์ถ์ง ์์์ต๋๋ค):
set -S ':' PYTHONPATH /activated/python/tree (string split ':' $PYTHONPATH)
PYTHONPATH
/activated/python/tree
์ถ๊ฐ( :
-delimited`)"์ฌ๊ธฐ์๋ PYTHONPATH
๋ฐ ๊ตฌ๋ถ ๊ธฐํธ :
์ ๋ ๊ฐ์ง๊ฐ ๋ฐ๋ณต๋ฉ๋๋ค. PYTHONPATH
๋ฅผ ๋ฐ๋ณตํด์ผ ํ๋ ๊ฒ์ ๋ ๊ฐ์ง ์ด์ ์์ ํ๋ฆผ์์ผ๋ฉฐ ์ด ๋ ๊ฐ์ง ์ด์ ์ค ์ด๋ ๊ฒ๋ ๊ตฌ๋ถ ๊ธฐํธ์ ์ ์ฉ๋์ง ์์ต๋๋ค.
set PYTHONPATH /activated/python/tree $PYTHONPATH
๋ผ๊ณ ๋งํ ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ง๊ฐํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค. ์ด๋ ๋งค์ฐ ์น์ํ ๊ฐ๋
/๊ด์ฉ๊ตฌ์ธ i = 2 + i
์ ๋งค์ฐ ์ ์ฌํ๊ธฐ ๋๋ฌธ์
๋๋ค. (ํ์ง๋ง +=
์ ๊ฐ์ ๋ฐ๋ก ๊ฐ๊ธฐ๊ฐ ์ฌ์ ํ ์์ผ๋ฏ๋ก ์๋์ --append
ํ๋๊ทธ๋ฅผ ์ ์ํฉ๋๋ค.) ๋ฐ๋ฉด์ ์ฌ๋๋ค์ ๋ชฉ๋ก์ ์ถ๊ฐ๋ฅผ ์๊ฐํ ๋ ๋ถํ ์ ๋ํด ์๊ฐํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ตฌ๋ถ ๊ธฐํธ์ ๊ฒฐํฉํฉ๋๋ค. ๊ทธ๋ค์ ์ ์ฒด ๋ชฉ๋ก์ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณํํ๊ณ ์ค์ ์์
์ ์ํํ๊ณ ๋ค์ ๋ฃ๋ ๊ฒ์ ๋ํด ์๊ฐํ์ง ์์ต๋๋ค. ๋ง์์์ผ๋ก ๊ทธ๋ค์ ๊ตฌ๋ถ์๋ฅผ "๋ด๋ถ" ๋๋ "์ ํธํ๋" ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ณ๊ฒฝํ๋ ๋์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฝ์ต๋๋ค.set
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋ ๊ฐ์ ๋ค๋ฅธ ๋ชฉ๋ก์ ๊ฒฐํฉํ๊ธฐ ์ํ ๋ ๋ค๋ฅธ ๋ช
๋ น์ ์ถ๊ฐํ๋ ๊ฒ์ ์ ์ฝํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์, ํ๋์ ๊ตฌ๋ถ ๊ธฐํธ์์ ๋ค๋ฅธ ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ณํํ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์ํํ๋ ๊ฒ์ ์ด์์ ์ผ๋ก ์ํ์ง ์๋ ๊ฒ์
๋๋ค. ๋๋ถ๋ถ ์์ ์ด์ ๋๋ฌธ์
๋๋ค.๋์กฐ์ ์ผ๋ก ๋ชฉ๋ก์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ง์ ํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ๋ชฉ๋ก๊ณผ ๋ฌด๊ธฐํ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ํํ ์ ์์ต๋๋ค.
# Changes the delimiter for this list. This might be done in some global config file for common lists as this one.
set -S ':' --no-modify PYTHONPATH
# or, workaround if you don't want to add extra options to set:
set -S ':' PYTHONPATH $PYTHONPATH
# The actual append operation
set --prepend PYTHONPATH /activated/python/tree
# or, workaround if you don't want to add extra options to set:
set PYTHONPATH /activated/python/tree $PYTHONPATH
์์ฌ์ /ํ์ ์ง๋ฌธ/๊ธฐํ:
__fish_sep_PYTHONPATH
๋ก ์ฌ์ฉํ์ฌ ๊ฐ๋ฅ).--no-modify
๋ผ๊ณ ๋ถ๋ฅด๋ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๋ด์ฉ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชฉ๋ก์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํ๋๋ก ์ง์ํฉ๋๋ค. ์์ ์ด์ (1) ๋๋ฌธ์ --append
๋ฐ --prepend
ํ๋๊ทธ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด์จ๋ ์ด๊ฒ์ ํ์ํ์ง ์์ต๋๋ค. ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์์ ์ ์ ์๋ฏ์ด ์ค๋๋ ๋ฌผ๊ณ ๊ธฐ์์ ์ถ๊ฐ ๋ฐ ์ถ๊ฐ๊ฐ ์ด๋ป๊ฒ ์ํ๋๋์ง ์ ์ ์์ต๋๋ค.,
์์ :
๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ["0:1", "2"]
๋ ["0", "1,2"]
["0", "1", "2"]
๊ฐ ๋์ด์ผ ํฉ๋๋ค. ๋ชฉ๋ก์ ๋ท๋ฐ์นจํ๋ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋จ์ํ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ฐ์ํฉ๋๋ค. ์ด ๋์์ ํ์ฌ ๋์๊ณผ ํ์ฌ ๊ธฐ๋ณธ ๋ถ๋ณ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ์๋ค๋ ์ฌ์ค๊ณผ์ ํธํ์ฑ์ ์ต๋ํํด์ผ ํฉ๋๋ค.๊ฒฐ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
set --no-modify -S : PYTHONPATH
set --prepend PYTHONPATH /activated/python/tree
๋ด ์ ์์ ๋ํ ์์ธํ ์๊ฒฌ์ ์ฃผ์ @szhu๋ , ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ํ ์๋ฃจ์ ์๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด --no-modify ์ต์ ์ ์ถ๊ฐํ๋ฉด ์ค์ ๋ก ๋ณ์๋ฅผ ๋ชฉ๋ก์ผ๋ก ๋ณํํ์ฌ ๋ณ์๋ฅผ ์์ ํ๋ฏ๋ก ๋ณ์๊ฐ ์์ ๋ฉ๋๋ค. ๋๋ ๋น์ ์ ์ ์์ ๊ฑฐ์ ๋ชจ๋ ์์๋ฅผ โโ๊ฑฐ๋ถํ์ง๋ง ๋น์ ์ ์์ ์ ์ ๋ถ๋ ์๋์ง๋ผ๋ ๋๋ถ๋ถ์ ๋ค๋ฃฐ ๋ณด๋ค ์ง์ ์ ์ธ ํด๊ฒฐ์ฑ ์ ๋ํด ์๊ฐํ๊ฒ ํ์ต๋๋ค. ์ฃผ์ด์ง env var๊ฐ ํญ์ ์ฃผ์ด์ง ํ ํฐ(์: ":" ๋๋ " ")์์ ์๋์ผ๋ก ๋ถํ ๋๊ณ ์ฌ๊ตฌ์ฑ๋์ด์ผ ํจ์ ๋ฌผ๊ณ ๊ธฐ์๊ฒ ์๋ ค์ฃผ๋ ๋ฉ์ปค๋์ฆ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์๋ ๋ฐฐ์ด ์ง์ ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ ์คํ๋ ๋ ๊ธฐ์กด ๊ฐ์ด ์ด๋ฏธ ๋ฐฐ์ด์ด ์๋ ๊ฒฝ์ฐ ์ฆ์ ๋ถํ ๋ฉ๋๋ค.
์ด ๋์์ ํ์ฑํํ๊ธฐ ์ํด ์๋ก์ด ์ต์ ์ set ๋ช ๋ น์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๋ชจํธํ๊ณ ๊ฐ์ด ์๋ ๋ณ์๋ฅผ ์ ์ํ๋ ๊ฒ์ผ๋ก ํด์๋ ์ ์๋ค๋ ์ ์ด ์ฐ๋ ค๋ฉ๋๋ค. set ๋ช ๋ น์ -A ํ ํฐ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ช ํํฉ๋๊น? ์๋ฅผ ๋ค์ด:
set -x -A ':' PYTHONPATH
์๋ง๋ ์ฝ๋ก ์ผ๋ก ๋ถํ ๋ ํ ๊ธฐ์กด PYTHONPATH ํ๊ฒฝ ๋ณ์๋ฅผ ์ฆ์ ๋ฐฐ์ด๋ก ๋ณํํ ๊ฒ์ ๋๋ค. ๋ฐ๋๋ก ๋ฌธ์์ด๋ก ๋ด๋ณด๋ด๊ฑฐ๋ ๋ณด๊ฐํ ๋ ๊ฐ์ด ์ฝ๋ก ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํด๋น ๋ช ๋ น์ด ์คํ๋ ๋ PYTHONPATH๊ฐ ์กด์ฌํ์ง ์๋๋ผ๋ ์๋ ๋ฐฐ์ด ์ฌ์์ด ๊ธฐ์ต๋๊ณ ํ์ ์ฌ์ฉ์ด ์ํฅ์ ๋ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๊ฒ์ ๋ถ๋ช ํ ๋ฐฐ์ด์ ์์ฑํ ๊ฒ์ ๋๋ค:
set PYTHONPATH /a/path /b/path /c:/d/path
๊ทธ๋ฌ๋ ๊ทธ ๋ง์ง๋ง ์ฃผ์ฅ์ ์ด๋ป์ต๋๊น? ์๋์ผ๋ก ๋ ๊ฐ์ ํ ํฐ์ผ๋ก ๋ถํ ๋์ด์ผ ํฉ๋๊น?
์ด ๋์์ ๋ด๋ณด๋ธ ๋ณ์์๋ง ์ ์ฉ๋์ด์ผ ํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฒ ์๊ฐ ํ์ํ ์ผ๋ถ ์ฝ๋ ์ผ์ด์ค๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ ์๋ ๋ถํ ์ ์ธ์ ๋ค์ ์์ ๊ฐ์ ๊ฐ์ด ํฌํจ๋์ด ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
set -x -A ':' PYTHONPATH 'hello:goodbye' $PYTHONPATH
์๋ ๋ถํ ํ ํฐ์์ ํด๋น ๊ฐ์ ๋ถํ ํด์ผ ํฉ๋๊น? ์๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋ณ๋์ ๋ช ๋ น๋ฌธ์์ ๊ฐ์ ์์ ํด์ผ ํฉ๋๊น? ์ด๋ค ๊ตฌ๋ฌธ์ ์ ํํ๋ ์๋ ๋ถํ ํ ํฐ์ด ํฌํจ๋ ๊ฐ์ ๋ํด ์ํํ ์์ ์ ๋ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ๋ง๋ ๋ํ ์ผ์ ์๋ค. ์ฆ, ๋ด๊ฐ ์๊ฐํ์ง ๋ชปํ ์ด ์ ์์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์์ต๋๋ค. ๋ ์์ธํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ์๋ ์ ์์ ๋ด๊ฐ ๋งํ ์ ์๋ ํ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
@krader1961 , ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ณ์๋ฅผ ๋ฌธ์์ด์์ ๋ชฉ๋ก์ผ๋ก ๋ณํํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๋น์ ์ด ๋ฌผ๊ณ ๊ธฐ์ ํ ๊ฐ์ง ์ค์ํ ๊ฐ๋ ์ ์คํดํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ๋ณ์๋ ๋ฌธ์์ด์ ๋ชฉ๋ก์ ๋๋ค . ๋ฌธ์์ด๋ก ๋ณด์ด๋ ๋ณ์๋ ์ค์ ๋ก ๊ธธ์ด๊ฐ 1์ธ ๋ชฉ๋ก์ ๋๋ค. fish๋ ๊ธธ์ด๊ฐ 0 ๋๋ 2์ธ ๋ชฉ๋ก์ด๋ ๋ค๋ฅธ ๊ธธ์ด์ ๋ชฉ๋ก๊ณผ ๋ค๋ฅด์ง ์๊ฒ ์ทจ๊ธํฉ๋๋ค.
๋ํ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํ ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์์ด์ด ๋ณ๊ฒฝ๋ ์ ์์ง๋ง ๋ฌผ๊ณ ๊ธฐ์ ์ฅ์ ์ค ํ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๊ตฌ๋ถ ๊ธฐํธ์ ๋ํด ์ ํ ์๊ฐํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ๋ชจ๋ -S
์ต์
์ด ๋ฌผ๊ณ ๊ธฐ _์ธ๋ถ๋ก ๋ด๋ณด๋ผ ๋ ์ด ๋ชฉ๋ก์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ๊ฒ์ ๊ถ์ฅํ๋ ์ด์ ์
๋๋ค. -S
๋ in-fish ๋ชฉ๋ก ํํ์ ๋ณ๊ฒฝํด์๋ ์ ๋ฉ๋๋ค(๋์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๋ชฉ๋ก์ ํํํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ ์ธ).
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฌ๊ธฐ ๋ด ์ ์์ด ์ผ๋ง๋ ๊นจ๋ํ ์ง ๋ณด์ฌ์ฃผ๋ ํ ๊ฐ์ง ์๊ฐ ์์ต๋๋ค. ๋ค์์ $L
๋ณ์๋ฅผ $ \x1e
์ ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ค์ ๋ณํํ๋ ์ฝ๋์
๋๋ค. ์ค๋๋ ๋ฌผ๊ณ ๊ธฐ์์ ์์ฑํ ์ ์๋ ๋ณ์(๋ฒ์, ํญ๋ชฉ ์)์๋ ์ ํ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
set -S \x1e L $L
ํ ๊ฐ์ง ๋: --no-modify
์ธ์ ๊ณ์ด์ ๋ฐ๋ก ๊ฐ๊ธฐ์
๋๋ค. ๋ค์์ ํด๋น ํญ๋ชฉ์
๋๋ค.
| ๋ฐ๋ก ๊ฐ๊ธฐ | ๋๋ฑํ |
| --- | --- |
| set [other args] --no-modify L
| set [other args] L $L
|
| set [other args] --prepend L $TOADD...
| set [other args] L $TOADD... $L
|
| set [other args] --append L $TOADD...
| set [other args] L $L $TOADD...
|
(์ด์ ์ ๋ค์์ ์ธ๊ธํ์ง๋ง ์ง๊ธ์ ๋ ์ ์ค๋ช
ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.) ์ด ์ธ ๊ฐ์ง ์ฃผ์ฅ์ด ์ผ๋ง๋ "๋ฉ์ฒญํ"์ง๋ฅผ ๊ฐ์กฐํจ์ผ๋ก์จ ์ผ๋ถ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ด ์ ํ ํ์ํ์ง ์๋ฌธ์ ์ ๊ธฐํ ์ ์์ต๋๋ค. ๋ฌผ๊ณ ๊ธฐ ๋ ์ง๊ต์ฑ์ ์ค๊ณ ์์น์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์ธ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ง๊ตํ ๋ ์ด๋ ์ํํ๋ ค๋ ํฐ ์์
์ ๋ํด ํด๋น ์์
์ ์ํํ๊ธฐ ์ํด ์ ํํ ๊ธฐ๋ฅ ์งํฉ์ด ๋ถ๋ช
ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ํ๋๋ง ์์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ค์ ๋ก ๋ชฉ๋ก์ ์์ ์ ์ถ๊ฐ/์ถ๊ฐ/๋ฐฉ์งํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ์ง๋ง ์ด๋ ๋์ฒด๋๋ ๋ฑ๊ฐ๋ฌผ์ด ๋ถํ์ํ๊ฒ ์ฅํฉํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์์ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ์๋์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ํ์ ํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ํด ์๊ฐํ๋ ๊ฒ์
๋๋ค. "set $L
to $L
$TOADD
$ "๊ฐ ์๋๋ผ " $TOADD
to $L
์ถ๊ฐ"๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
๋น์ ์ด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋ด ์ ์์ ๋ํด ๋ ์ค๋๋ ฅ ์๋ ์ฌ๋ก๊ฐ ๋๋ค๋ฉด. (๋ํ ์ ๊ฐ ์๋ชป ์ดํดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ ์์ ๋กญ๊ฒ ์์ ํด์ฃผ์ธ์.)
@szhu ๋๋ ๋ฌผ๊ณ ๊ธฐ์ ๋ชจ๋ ๋ณ์๊ฐ 0, 1 ๋๋ ๊ทธ ์ด์์ ๊ฐ ๋ชฉ๋ก์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋ํ ๊ด๋ จ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ๋ด๋ถ ํํ์ ์ํฅ์ ์ฃผ์ด์๋ ์ ๋๊ฑฐ๋ ๊ฐ์ด ๋ฒ์ฉ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ ์ง๋๋ ๋ฐฉ์(๊ตฌ๋ถ ๊ธฐํธ ์ ์ฅ ์ ์ธ)์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํ๋ค๊ณ ๋ถ๋ช ํ ๋ช ์ํ ์ด์ ์๊ฒฌ์ ์ฝ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋น์ ์ ๋ํ ๋์ ์ด์ ์์ ์ ๋ค๋ฃจ์ง ์์์ต๋๋ค. ๋ง์ง๋ง ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
set -S \x1e L $L
L ์ ์ด๋ฏธ ๋ ๊ฐ ์ด์์ ๊ฐ์ด ํฌํจ๋์ด ์์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ฐ๊ฒฐ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ ์ธ์๋ ์๋ฌด ๊ฒ๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ $L ์ธ์๋ ์ ํ ์ฌํญ์ ๋๊น? ์๋๋ฉด ๋จผ์ ๊ธฐ์กด ๋ฐฐ์ด์ ๊ฐ๋จํ ๋ฌธ์์ด(๊ธฐ์กด ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ)๋ก ๋ณํํ ๋ค์ ํด๋น ๋ฌธ์์ด์ ์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ถํ ํด์ผ ํฉ๋๊น? ์์ ๋งํ๋ฏ์ด ์ ๋ง๋ ๋ํ ์ผ์ ์๋ค.
๊ถ๊ทน์ ์ผ๋ก ๊ธฐ์กด ๋์์ด๋์ ์ ์ง ๊ด๋ฆฌ์๋ --no-modify
๊ธฐ๋ฅ ์ ํ๊ตฐ์ ์ถ๊ฐํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ๊ฒ์ด์ง๋ง ๋น์ฉ์ ๋นํด ์ ์๊ฐ์ ์ถฉ๋ถํ ๊ฐ์น๋ฅผ ์ถ๊ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ ๋ฐ๋ํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. ์ด ์ค๋ ๋๊ฐ ๊ธธ์ด์ ์์ ๋ด์ฉ์ ๋ํ ๊ทํ์ ์ธ์ ์ ๋์ณค์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ์ด์ง์ ์๋ค๋ ๊ฒ์ ์๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค! ์์์๋ ๋๋ถ๋ถ์ ์ฐ๋ ค ์ฌํญ์ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ ๋ถ๋ ์๋๋๋ค. ์๋์์ ๊ฐ๊ฐ์ ์ฐ๋ ค ์ฌํญ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
set -S \x1e L $L
$L
๋ ์ ํ ์ฌํญ์
๋๊น?set
์ ๊ธฐ์กด ๋์์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ํ์ฌ ๋์์์ set L $L
๋ L
๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ set L
๋ L
๋ฅผ ๋น ๋ชฉ๋ก์ผ๋ก ๋ง๋ญ๋๋ค. set -S \x1e L $L
๋ฐ set -S \x1e L
์ ๋์ผํฉ๋๋ค.
1.1 set -S \x1e L $L
๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ง๋์น๊ฒ ์ฅํฉํ๊ฒ ๋ณด์ด์ง ์์ต๋๊น?
์ฝ๊ฐ. ์ด๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ --no-modify
์ต์
์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ก ์ ์ํ๋ ์ด์ ์
๋๋ค.
ํ์ง๋ง ์ด ๋ฐ๋ก ๊ฐ๊ธฐ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ๋ด ๊ณํ์ด ๋ฌด๋์ง์ง ์์ต๋๋ค. set PATH ~/.bin $PATH
๋ชฉ๋ก์ ์ถ๊ฐํ ๋ ์ด๋ฏธ ๋งค์ผ ์ด ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๊ฐ์ ์ด์ ๋ก --prepend
์ --append
๋ ์ ์ํฉ๋๋ค.
์ด์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ \x1e
์ด๊ณ ์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ $ :
์ด๋ฉฐ ๋ฌผ๊ณ ๊ธฐ ๋ชฉ๋ก ["hello", "world"]
( hello\x1eworld
๋ก ๋ด๋ณด๋)์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ณํ์ ์ํํ๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๋ฐฉ๋ฒ(" ๋ณํ ์ต์
")์ด ์์ต๋๋ค.
["hello", "world"]
๋ฅผ ์ฌ์ฉํ์ฌ ["hello", "world"]
๋ก ๋ณํํฉ๋๋ค( hello,world
๋ก ๋ด๋ณด๋).hello\x1eworld
๋ฅผ ์ฌ์ฉํ์ฌ ["hello\x1eworld"]
๋ก ๋ณํํฉ๋๋ค( hello\x1eworld
๋ก ๋ด๋ณด๋).์ด๊ฒ์ ๊ตฌํ ๊ด์ ์ด ์๋๋ผ UI ๊ด์ ์์ ๋์จ ๊ฒ์์ ์ ์ํ์ญ์์ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ๋ณด์ด๋์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋ค์ ์ง๋ฌธ์์ ๊ตฌํ์ ๋ํด ๋ค๋ฃจ๊ฒ ์ต๋๋ค. _์ฐธ๊ณ : ์ด ๋ต๋ณ์ ๋๋จธ์ง ๋ถ๋ถ์ ๊ทํ์ ์ง๋ฌธ์ ๋ฐ๋ผ ์์์ ๋ค๋ฃจ์ง ์์ ์๋ก์ด ๋ด์ฉ์ ๋๋ค. ๊ฐ์ฌ ํด์!_
๋ฌผ๊ณ ๊ธฐ ๋ด์์. ์ฒซ์งธ, ์ฐ๋ฆฌ๊ฐ ์์ ํ ๋ฌผ๊ณ ๊ธฐ์์ ์์ ํ๋ ๊ฒฝ์ฐ ๋ชฉ๋ก์ ์ผ๊ธ์ด๋ฉฐ ๊ตฌ๋ถ ๊ธฐํธ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๋ ๋ค ํ์ํ์ง ์์ต๋๋ค. (๋ค์ ๋งํ์ง๋ง "ํด์ผ ํ๋ค"๋ ๊ฒ์ ์ฌ์ฉ์์ ๊ด์ ์์ ๋ณด๋ ๊ฒ์ด๋ฉฐ ๊ฐ๋ฐ์๋ก์ ์ด๋ฅผ ์ฌ์ค๋ก ๋ง๋๋ ๊ฒ์ ์ฐ๋ฆฌ์ ์ฑ ์์ ๋๋ค.)
vars์ ๋ด๋ณด๋ด๊ธฐ ํ์ ๋ณ๊ฒฝ ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ์ ์ผํ ์ด์ ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฝ๋ ํ๋ก๊ทธ๋จ์ ๋ํด ๋ด๋ณด๋ธ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค. ๋ฌผ๊ณ ๊ธฐ์์ ์์ฑ๋ ๋ชฉ๋ก์ ๊ฒฝ์ฐ ๋ชฉ๋ก์ผ๋ก์์ ๋ณ์์ ์๋ฏธ๊ฐ ์ค์ํ๊ณ ์ ์ ์๋์ด ์์ผ๋ฏ๋ก ๋ชฉ๋ก ํํ์ ๋ณด์กดํด์ผ ํ๋ฏ๋ก ๋ณํ ์ต์ 1 ์ ํ์คํ ์ฌ์ฉํฉ๋๋ค.
vars์ ๊ฐ์ ธ์ค๊ธฐ ํ์ ๋ณ๊ฒฝ ๊ทธ๋ฌ๋ PATH
์ ๊ฐ์ ํ๊ฒฝ ๋ณ์๊ฐ ์ฒ์์ ๋ฌผ๊ณ ๊ธฐ ์ธ๋ถ์์ ์์ฑ๋ ๊ฒฝ์ฐ ์ด๋ฏธ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ์๋ ๋ชฉ๋ก์ ๋ํด ํด๋น ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ๋ฌด์์ธ์ง ๋ฌผ๊ณ ๊ธฐ์๊ฒ ์๋ ค์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ณํ ์ต์
2 ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2.1 ์ด๊ฒ์ ์ด๋ป๊ฒ ๊ตฌํ๋ฉ๋๊น?
์ฌ์ฉ์๊ฐ ์ด๊ฒ์ ์ ํ์๋ ์์ง๋ง ๋ฌผ๊ณ ๊ธฐ๋ ์ค์ ๋ก ๋ชฉ๋ก์ ๋ฌธ์์ด๋ก ์ ์ฅํฉ๋๋ค. x
hello\x1eworld
#$ ๋ก ์ ์ฅ๋ฉ๋๋ค. ๋ด ์ ์์ x
๋ณ์์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ง์ ํ๋ ๋ ๋ค๋ฅธ ๋ณ์ __fish_delimiter_x
$ ๊ฐ ์์ต๋๋ค. ์ง๊ธ์ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ \x1e
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ณํ ์ต์ 1์ ๊ฒฝ์ฐ:
__fish_delimiter_x
์ ์ ์ฅํฉ๋๋ค.๋ณํ ์ต์ 1์ ๊ฒฝ์ฐ ๋๋ฑํ ๊ตฌํ:
__fish_delimiter_x
์ ์ ์ฅํฉ๋๋ค.๋ณํ ์ต์ 2์ ๊ฒฝ์ฐ:
__fish_delimiter_x
์ ์ ์ฅํฉ๋๋ค.2.2 ๋ ๊ฐ์ง ๋ณํ ์ต์ ์ด ๋ชจ๋ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ์ด๋ค ๋ณํ ์ต์ ์ ์ฌ์ฉํ ์ง ์ด๋ป๊ฒ ์ง์ ํฉ๋๊น?
์ต์
1์ ๊ฒฝ์ฐ -D
๋๋ --convert-delimiter
, ์ต์
2์ ๊ฒฝ์ฐ -d
๋๋ --set-delimiter
์ ๋ ๊ฐ์ง ์ต์
์ด ์์ ์ ์์ต๋๋ค.
2.3 ๋ ๊ฐ์ง ์ต์ ์ด ๋ชจ๋ ํ์ํ๊ฐ์?
ํ์ฌ ๋ฌผ๊ณ ๊ธฐ์์ ์ฐ๋ฆฌ๋ ๋ฌผ๊ณ ๊ธฐ ์ธ๋ถ์ ์ผ์์์ \x1e
๋ฅผ ๋ณผ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ๋ก ์ ํํฉ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ ์งํ๊ณ ์ด ๊ฐ์ ์ ์ ์งํ๋ฉด ๋ณํ ์ต์
1 ์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ๋ณํํ๊ณ ์ค์ ํ๋ ๋ฐ ์ถฉ๋ถํ๋ฉฐ ๋ณํ ์ต์
2๊ฐ ํ์ํ์ง ์์ต๋๋ค . (์ด๋ฅผ ํ์ ํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ ์ด ์ฌ์ค์ธ ๊ฒฝ์ฐ ์ธ๋ถ์์ ์์ฑ๋ ๋ชฉ๋ก์ ๋ณํํ ๋ ๋ณํ ์ต์
1์ "์ด์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ชจ๋ ๋ฐ๊พธ๊ธฐ"๊ฐ ์๋ฌด ์์
๋ ์ํํ์ง ์์ ์ ์ฒด ๋ณํ์ด ๊ฐ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๋ ๊ฒ์
๋๋ค. ๋ณํ ์ต์
2๋ก)
@ridiculousfish , ํนํ UI ๋ฐ ๊ตฌํ ์ธ๋ถ ์ ๋ณด์ ๊ด๋ จํ์ฌ ์ด์ ๋ํ ํผ๋๋ฐฑ๋ ๊ฐ์ฌํฉ๋๋ค. ๊ฐ์ฌ ํด์!
์ฌ๊ธฐ์ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ด์ผ๊ธฐ๋ง ํด๋ณผ๊น์?
์ค์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ +1
๊ทธ ๊ตฌ๋ถ ํธ๋ฆญ์ด ๋ฌผ๊ณ ๊ธฐ์๊ฒ ์ ๋ง ํ์ํ๊ฐ์? ํ #627
๋ณ์ ๊ฐ์ ๋ํ ๋ฌธ์์ด ํํ์ ๋ฐฐ์ด๋ก ๋ณํํ๋ ๋ ๊ฐ์ง ํธํ๋์ง ์๋ ๋ฐฉ๋ฒ์ด ์์์ ๋ฐ๊ฒฌํ ๋ฌธ์ #2106์ ๋ํ ์์ ์ฌํญ์ ๋น์ถ์ด ์ด๊ฒ์ ๋ค์ ๋ฐฉ๋ฌธํฉ๋๋ค. ๊ทธ ์ค ํ๋๋ ๋น ์์๋ฅผ ์๋ชป ์๋ตํ์ต๋๋ค. ํต์ฌ ๋ฌธ์ ๋ class env_var_t
๊ฐ wcstring์ ๋ฒกํฐ๊ฐ ์๋๋ผ wcstring
๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ๊ฒ์
๋๋ค. ๋
ธ๋ ฅํ ๊ฐ์น๊ฐ ์๋์ง ์ฌ๋ถ๋ ๋
ผ์์ ์ฌ์ง๊ฐ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๋ฐ๋ฅด๊ณ ์๋ค๋ฉด PR #4082๋ฅผ ์ดํด๋ณด๊ณ ํ ์คํธํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ zsh์์ ๊ฐ์ ์ด๋ฆ์ ๊ธฐ๋ฅ๊ณผ ์ ์ฌํ "์ฐ๊ฒฐ๋" ๋ณ์์ ๋๋ค.
์ฝ๋ก ์ผ๋ก ๋ด๋ณด๋ธ ์ด๋ฌํ ๋ชฉ๋ก๊ณผ ์ด ํ์ดํธ๋ฆฌ์คํธ์ ์ด๋ค ํ๊ฒฝ์ ํฌํจํด์ผ ํ๋์ง์ ๋ํ ์ง๋ฌธ์ ์์ง ๊ฒฐ์ ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ํ์ฌ ์ํ๋ ๋ฌด์์ ๋๊น? ์ด ์ฃผ์ ์ ๋ํ ์ต์ข ํด๊ฒฐ์ฑ ์ ๊ธฐ๋ํ ์ ์์ต๋๊น? ๋ฐ๋ก ์ค๋, ๋๋ LD_LIBRARY_PATH๊ฐ ํ์ดํธ๋ฆฌ์คํธ์ ์๋ค๋ ํจ์ ์ ๋ค์ ๋น ์ก๋ค...
์์ฝํ์๋ฉด: Unix ํ๊ฒฝ ๋ณ์๋ ๋ฌธ์์ด์ด๋ฏ๋ก ๋ฐฐ์ด๊ณผ ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋๋ถ๋ถ์ ์ฝ๋ก ($PATH)์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋๋ ์๋์ง๋ง($LESS). ์ฐ๋ฆฌ๋ ๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ์์ ๋ชจ๋ ๋ฐฐ์ด์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฝ๋ก ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค(์ค์ ๋ก ๋ฌผ๊ณ ๊ธฐ๋ ์ด๋ฐ ์์ผ๋ก ์๋ํ์ต๋๋ค). ๋ฌธ์ ๋ ์ผ๋ถ ํ๋ซ ๋ณ์์ ์ฝ๋ก ($DISPLAY, $SSH_CONNECTION)์ด ํฌํจ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ชฉํ๋ ๊ตฌ๋ถ๋ ๋ณ์๊ฐ ๋ฌผ๊ณ ๊ธฐ์ ๋ฐฐ์ด ์ง์๊ณผ ํจ๊ป ์์ฐ์ค๋ฝ๊ฒ ์๋ํ๋๋ก ํ๋ ๊ฒ์
๋๋ค. @szhu ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด set
๋ฅผ ํฅ์์ํฌ ๊ฒ์ ์ ์ํ์ง๋ง set
๋ฅผ ํฅ์์ํค๋ IMO๋ ์ด๊ฒ์ ์ฒจ๋ถํ๊ธฐ์ ์๋ชป๋ ์์น์
๋๋ค.
--no-modify
).--no-modify
์ ๋ํด์๋ ๊ฐ๋ฅด์ณ์ผ ํฉ๋๋ค.๋ฆฌ๋ทฐ์์ ๋๋ @faho ์ splitenv ์์ด๋์ด ๋ฅผ ์ ํธํฉ๋๋ค. splitenv name
๋ ๊ธฐ์กด ๋ณ์๋ฅผ ์ฝ๋ก ์ผ๋ก ๋ถํ ํฉ๋๋ค. ๋๋๋๋ก ๊ฐ๋จํฉ๋๋ค. ์ฝ๋ก ์ ์ฌ์ฉํ์ง ์๋ ๋ณ์๋ ํน๋ณํ ์ง์์ด ํ์ํ์ง ์์ ๋งํผ ๋งค์ฐ ๋๋ญ
๋๋ค.
๋จ์ ์ ๋ฌผ๊ณ ๊ธฐ๋ก ๋ด๋ณด๋ธ ๋ฐฐ์ด์ด ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ก ๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ค์ ๋ก๋ ์ด๊ฒ์ด ๋๋ฌผ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํผํ ์๋ง ์๋ค๋ฉด ์ด splitenv
ํฉ๋ณ์ฆ์ ์ฌ์ฉ์์๊ฒ ๊ฐํด์๋ ์ ๋ฉ๋๋ค. ๊ทธ๋์ ํ ๋จ๊ณ ๋ ๋์๊ฐ ์ด๋ฆ์ด PATH๋ก ๋๋๋ ๋ชจ๋ ํ๊ฒฝ ๋ณ์ (์: LD_LIBRARY_PATH, PYTHONPATH ๋ฑ)๋ก ์ฝ๋ก ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ํ์ฅํ๊ณ ์ถ์ต๋๋ค. ์ค์ ๋ก ์ด๊ฒ์ ๊ฑฐ์ ํญ์ ์ฌ๋ฐ๋ฅธ ์ผ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ฌผ๋ฆฐ ์ฌ๋์ string join
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์์ ํ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋ด๊ฐ ์ ์ํ๋ ๊ฒ(์ ๋ง๋ก faho์ ์ ์):
splitenv
ํจ์๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด๊ฒ์ ๋ฌผ๊ณ ๊ธฐ ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ ์์ต๋๋ค.๋๋ ์ด๊ฒ์ด ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฐฐ์ด๊ณผ ๊ด๋ จ๋ ๋๋ถ๋ถ์ ๊ณ ํต์ ๋ฏธ๋๋ฉํ๊ณ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
splitenv ์์ด๋์ด์ ๊ดํ์ฌ:
์๋ฅผ ๋ค์ด ["item1", "item:2"]
์ ๊ฐ์ด ํญ๋ชฉ์ ์ฝ๋ก ์ด ํฌํจ๋ ๋ชฉ๋ก์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๋ด๋ณด๋ด๋๋ก ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. (ํนํ ๋ฐฐ์ด์ด ์ฌ์ฉ์ ์
๋ ฅ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์๋ ์ด๊ฒ์ด ๋๋ฌธ ์ผ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.)
๋ชฉ๋ก์ item1:item:2
๋ก ๋ด๋ณด๋ด๋์? ๊ทธ๋ ๋ค๋ฉด ๋ด๋ณด๋ด๊ธฐ ํ ์๋ ๋ชฉ๋ก์ ๋ค์ ๋ง๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ๋ณ์์ ๋ํด ๋ณ๊ฒฝํ ์ ์๋ ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ๊ฐ๋ ๊ฒ์ ์๋ชป๋ ๋๋์ ์ฃผ์ง๋ง ํ์ดํธ๋ฆฌ์คํธ๋ฅผ *?PATH
๋ก ์ค์ ํ๋ ๊ฒ์ ๋ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค. (๊ทธ๊ฒ์ ๋ด๊ฐ ๊ตฌ๋ถ์๋ฅผ ๋ณ์๋ก ์ ์ฅํ์๋ ์ ์์ ๋ ๋ค๋ฅธ ์ด์ ์์ต๋๋ค. ๋ณ์๋ฅผ ์ค์ ํ์ฌ ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.)
@szhu ๋ง์ต๋๋ค. Exported-lists-can't-contain-colons๋ Unix ๊ฐ ์ด๋ฏธ ๊ฒช๊ณ ์๋ ๋ฌธ์ ์ ๋๋ค.
๋ถํฐ \
๊ทธ๋์ ๋ฌผ๊ณ ๊ธฐ์ ๋ํด ๋์ผํ ์ ํ์ ๋์ ํ๋ ๊ฒ์ ๋ํด ๊ทธ๋ค์ง ๋์๊ฒ ์๊ฐํ์ง ์์ต๋๋ค(๋ด๋ณด๋ธ ๋ณ์์๋ง ํด๋น).
๋ํ ์ด ๋ฌธ์ ๋ ๋ฐฐ์ด์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋๋ ๋ฌผ๊ณ ๊ธฐ ์ธ์คํด์ค๋ก ๋ด๋ณด๋ผ ๋๋ง ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ฒ์ผ๋ก ํ๋ช ๋๋ฉด ๋ค๋ฅธ ๋ณ์์ ์ฌ์ด๋์นด ๋ฐ์ดํฐ๋ฅผ ์ฒจ๋ถํ๊ฑฐ๋ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ ๋ ๋ค๋ฅธ ๋ฐฐ์ด ๊ตฌ๋ถ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ด ์๊ฐ์ ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ๋ฉ๋ฆฌ ๊ฐ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ ์์ด ์ ์๋ํ์ง ์๋ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ํํ์ง ์๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ถ๋ช์น๋ฉด ์ ๋ง ๋์ ๊ฒ ๊ฐ์ ๋๋ ต์ต๋๋ค.
๋ค์์ ๋ถ๋ถ์ ์ผ๋ก๋ง ๊ณ ์๋ ์์ ๋๋ค.
set -x TEST color:red
set -x TEST2 color:red font:serif
set -x TEST_PATH color:red
set -x TEST2_PATH color:red font:serif
exec fish
echo $TEST #=> color:red
echo $TEST2 #=> color:red:font:serif
echo $TEST_PATH #=> color red
echo $TEST2_PATH #=> color red font serif
์์ ์ฌํญ์ ์ง์ผ๋ณธ ํ ๋ง์ ์ ๊ท ์ฌ์ฉ์๋ค์ด ํผ๋์ค๋ฌ์ ํ๋ ๋ชจ์ต์ ์์ํ ์ ์์ต๋๋ค.
๋ค์ ํ๋์ด ํจ์ฌ ๋ ์ฌ๋ฏธ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
set -x TEST color:red
set -x TEST2 color:red font:serif
set -x TEST_PATH color:red
set -x TEST2_PATH color:red font:serif
exec fish
echo $TEST # color:red
echo $TEST2 # color:red font:serif
echo $TEST_PATH #=> color:red
echo $TEST2_PATH #=> color:red font:serif
์ด์ ๋ํ ๊ทํ์ ์ง์ญ์ฌํ์ ์๊ฐ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
๊ธฐ์กด ์ฝ๋ก ์ ํ์ถํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ตฌ๋ณ์ด ์ ์ง๋ฉ๋๋ค.
ํ์ถ์ ๋์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ณ์๊ฐ ๋ฐฐ์ด์ธ์ง ์ฌ๋ถ๊ฐ ๊ธฐ์ต๋์ง ์๋๋ค๋ ๊ฒ์ด ์ฌ์ ํ ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๊น?
set -x TEST2 color:red font:serif
set -x TEST2_PATH color:red font:serif
exec fish
echo $TEST2 # color\:red:font\:serif
echo $TEST2_PATH #=> color:red font:serif
๋ค. ๋ด ๊ฐ์ค์ ๋ฐฐ์ด ๋ด๋ณด๋ด๊ธฐ๊ฐ ๊ฒฝ๋ก ๋ชฉ๋ก ์ธ๋ถ์์ ์ผ๋ฐ์ ์ด์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
MANPATH์๋ ์ด์ค ์ฝ๋ก (::)์ ๋ํ ํน๋ณํ ์๋ฏธ๊ฐ ์์ต๋๋ค. - #2090 ์ฐธ์กฐ - ์ด ์์ ์์ ์คํจ๋๊ฐ ๋ฐ์ํฉ๋๊น?
๋๋ ๋ํ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ฌ์ด๋์นด ๋ณ์ FISH_ARRAY_VARIABLES=FOO\t:\nBAR\t;\nBAZ\t-\n
๋ฅผ ๊ฐ๋ ๊ฒ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ๋ฐฉํดํ์ง ์๊ณ "์ฐ๋ฆฌ๋ ์ง๊ธ ๋ฌผ๊ณ ๊ธฐ ํฌํจ" ๊ฒ์ฌ๊ธฐ..
์ฌ: https://github.com/fish-shell/fish-shell/issues/436#issuecomment -392409659 @zanchey
#2090์ ์์ธํ ์ฝ์ง๋ ์์์ง๋ง ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๊ณผ ๋ฐฐ์ด ํ์ ๊ฐ์ ๋ณํ์ด ์์ ํ ์ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค(๋ฐฐ์ด ํญ๋ชฉ์ ์ฝ๋ก ~๊ฐ ๋ํ๋์ง ์๋ ๊ฒฝ์ฐ ์ ์ธ).
MANPATH
์ ์ด์ค ์ฝ๋ก ์ ํฌํจํ๋ ค๋ฉด ์ด์ค ์ฝ๋ก ์ด ํ์๋์ด์ผ ํ๋ ๊ณณ์ ๋น ๋ฌธ์์ด์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
$ set -x MANPATH 1 2 '' 3
# Check if it's set
$ bash -c 'echo $MANPATH'
1:2::3
MANPATH
๋ฅผ ์ฝ๋ก ์ผ๋ก ์์ํ๋ ค๋ฉด ์์ ๋ถ๋ถ์ ๋น ๋ฌธ์์ด ํญ๋ชฉ์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
$ set -x MANPATH '' 1 2 3
# Check if it's set
$ bash -c 'echo $MANPATH'
:1:2:3
๋๋ ์ฌ๊ธฐ์์ ๋ชจ๋ ๊ฒ์ ๋ฐ๋ฅด์ง๋ ์์์ง๋ง ์ฌ์ฉ์๋ก์ "๊ตฌ์ฑ ์์"์ ์นํธํ๊ณ ์ถ์ต๋๋ค.
set -S
๋ฐ splitenv
๋ ๊ตฌ์ฑ ํ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ถ ์ฌ์ฉ์๋ fish.config์์ ์ด๋ฅผ ์ํํ๊ณ PYTHONPATH๋ฅผ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ PYTHONPATH๋ฅผ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋จ์ผ ๋จ์ด๋ก ์ฒ๋ฆฌํ์ง ์๊ณ ์ฒ๋ฆฌํฉ๋๋ค. stackoverflow ์กฐ์ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ณ ํ ์ฌ์ฉ์์์ ๋ค๋ฅธ ์ฌ์ฉ์๋ก PYTHONPATH๋ฅผ ์กฐ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ํญ์ ์๋ํ์ง ์์ต๋๋ค...
" PATH
๋ก ๋๋๋ ๊ฒฝ์ฐ" ๊ท์น์ ๊ตฌ์ฑ์ด ํ์ ์์ผ๋ฉฐ ๊ฐ๋ฅํ ํ ์๋ฒฝํ๊ฒ ๋ค๋ฆฝ๋๋ค. +1:
(์ด์ ๋ฒ์ ๊ณผ์ ๋นํธํ์ฑ์ด ๊ฐ์น๊ฐ ์๋์ง ์ฌ๋ถ์ ๋ํ ์๊ฒฌ์ด ์์ต๋๋ค)
์, set -x TEST2_PATH color:red font:serif
๋ color red font serif
๋ฐฐ์ด๋ก ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ๋ณ์ ๋ด๋ณด๋ด๊ธฐ์ ๊ด๋ จ๋ ๋ฌธ์ ์
๋๋ค. ์๋ ๋ฐฉ์์ ์ดํดํ์ง ์๊ณ ๋ ๋ด๋ณด๋ธ var๋ฅผ ๋ฐฐ์ด๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๋ค. ๋ด ๊ฐ์ค์ ๋ฐฐ์ด ๋ด๋ณด๋ด๊ธฐ๊ฐ ๊ฒฝ๋ก ๋ชฉ๋ก ์ธ๋ถ์์ ์ผ๋ฐ์ ์ด์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
@ridiculousfish ํ์ฌ ์กฐ๊ฐ์์๋ ์ฌ์ค์ผ ์ ์์ง๋ง ๋ฌผ๊ณ ๊ธฐ๊ฐ ๋ ๋ง์ ๊ฒฌ์ธ๋ ฅ์ ์ป์ผ๋ฉด ์ฌ์ฉ์๊ฐ ๋ฌผ๊ณ ๊ธฐ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ชฉ๋ก์ ์์ ๋ฌผ๊ณ ๊ธฐ ์กฐ๊ฐ์ ๋ณด๋ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ฒฐ๊ตญ ๋ฌผ๊ณ ๊ธฐ ์ธ์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ/ํ๋ฌ๊ทธ์ธ์ด ์์ ์ ์๋ค๊ณ ์์ํ ์ ์์ต๋๋ค(๋ช ๋ ํ์ ์ด ์๊ฒฌ์ ๋ค์ ํ์ธํ์ฌ ์ด๊ฒ์ด ์ฌ์ค์ธ์ง ํ์ธํ๊ฒ ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๋ณดํธ์ ์ผ๋ก ๋ชฉ๋ก์ ์๋์ผ๋ก ์ญ/์ง๋ ฌํํ ์ ์์ต๋๋ค. ๊ทธ ์ฝ๋๋ฅผ ๋ ๊นจ๋ํ๊ณ ๋ ํด๊ฒฐํ๋๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
๋น์ทํ์ง๋ง ์ฝ๊ฐ ๋ค๋ฅธ ์๊ฐ์
๋๋ค. PATH
๋ฅผ ํน์ํ ๊ฒฝ์ฐ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๊ธฐ๋ก์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ดํดํ ์ ์๋ ์๋์ฐฉ์ค์ ์ธ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์
๋๋ค. ์ด๊ฒ์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ์ผ๋ฐ์ ์ธ ์คํฌ๋ฆฝํ
์ธ์ด๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ์ ํํ๊ณ ์ ์ฌ์ ์ธ ํฅํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ํํฉ๋๋ค.
@ridiculousfish ํ ๊ฐ์ง ๊ฐ๋ฅํ ์๋ฃจ์
์ ๊ฐ ํ๊ฒฝ ๋ณ์/๋ฐฐ์ด์ ์์ฒด ๊ตฌ๋ถ ๊ธฐํธ์ ์ฐ๊ฒฐํ๋ ๊ฒ์
๋๋ค( '\x1e'
๋๋ ' '
๋๋ ':'
๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์งํ ์ ์์). ํ๊ฒฝ ๋ณ์๋ฅผ ์์ฑํ๋ ์ฌ์ฉ์๋ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์ ์ ํ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ ํํ ์ฑ
์์ด ์์ต๋๋ค. ๋ช
๋ น์ set --separator ':' TMP 1 2 3
์ ๊ฐ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์๋ ค์ง ํ๊ฒฝ ๋ณ์์ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์๋ ์ธ์ํ ์ ์๊ณ ๋ ๋ง์ ํ๋ก๊ทธ๋จ(์: Python)๊ณผ ๋ฌผ๊ณ ๊ธฐ์ ํธํ์ฑ์ ๋์ผ ์ ์๋ ํด๋นํ๋ ์ ์๋ ค์ง ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ต๊ทผ ๋๊ธ๋ง ์ฝ๋ ๋ถ๋ค์ ์ํด @thuzhf ์ set --separator
๊ถ์ฅ ์ฌํญ์ ์ด ์ค๋ ๋ ์ ์ฒด์์ ๋ฐ๋ณต์ ์ผ๋ก ์ธ๊ธ๋ set -S
๊ถ์ฅ ์ฌํญ๊ณผ ๋์ผํฉ๋๋ค. ํด๋น ํ ๋ก ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด ์ด ํ์ด์ง๋ฅผ set -S
grepํ ์ ์์ต๋๋ค.
@szhu ์ด์ set -S
์ ๋์น์ฑ์ง ๋ชปํด์ ์ฃ์กํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ์ํ๋ ๊ฒ์
๋๋ค. ๋๋ ๋ํ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์๋ก์ด ์ต์
์ ๋ํด ๊ฐ์ง๊ณ ์๋ ๋ช ๊ฐ์ง ์ฐ๋ ค ์ฌํญ์ด ์์์ ์๊ฒ ๋์์ต๋๋ค. ์๋์ ์ด๋ฌํ ๋ฌธ์ ์ ๋ํ ๋ด ์๊ฐ์ ๋งํ ์ ์์ต๋๋ค(fish's set ๋ -s
๋ฅผ ์ต์
์ผ๋ก ์ฌ์ฉํ์ง ์์์ผ๋ฏ๋ก ์์ผ๋ก $#$ --separator
-s
๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค).
--no-modify
๋ ๋ฌด์ธ๊ฐ๋ฅผ ์์ ํฉ๋๋ค. ์, ์ด๋ฆ์ ๋ช
์์ ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค(์: --change-separator
).' '
). ์ด ๊ตฌ๋ถ ๊ธฐํธ๋ ์ด var๊ฐ ๋ฌธ์์ด์์ ์์ฑ๋๊ณ ๋ฌธ์์ด๋ก ๋ณํ๋ ๋ ์ฌ์ฉ๋ฉ๋๋ค(์ด๋ Python์ join()
ํจ์์ ๊ฐ์ ์ผ๋ถ ์ธ์ด์์ ์ผ๋ฐ์ ์ธ ์์ด๋์ด์
๋๋ค). var๋ ๋ด๋ณด๋ผ ๋ ๋๋ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ํ ๋ ๋ฌธ์์ด๋ก ๋ณํ๋ฉ๋๋ค.set ENV_VAR a b c
. -s
๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ ๊ตฌ๋ถ ๊ธฐํธ๋ก ' '
๋ฅผ ์ ํํฉ๋๋ค.set -s ':' ENV_VAR
. ์ด ๊ฒฝ์ฐ ENV_VAR์ ๋น ๋ชฉ๋ก์ผ๋ก ์ค์ ๋ฉ๋๋ค.set -s ':' ENV_VAR a b:c d e:f
. ์ด ๊ฒฝ์ฐ ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ์ฉ์๋ ':'
๊ฐ ๊ตฌ๋ถ ๊ธฐํธ์์ ๋ถ๋ช
ํ ์ดํดํ๊ณ ENV_VAR ์ด ['a b', 'c d e', 'f']
์ ๊ฐ์ ๋ฐฐ์ด์ด ๋๊ณ 'a b:c d e:f'
๋ก ๋ด๋ณด๋ด์ง๋ค๋ ๊ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ๋ด๋ณด๋ธ ENV_VAR์ด ๊ณต๋ฐฑ์ผ๋ก ์์ํ๊ณ ๊ณต๋ฐฑ์ผ๋ก ๋๋๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? set -s ':' ENV_VAR \ a b:c d e:f\
์ ๊ฐ์ ์ด์ค์ผ์ดํ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ENV_VAR์ [' a b', 'c d e', 'f ']
๊ฐ ๋๊ณ ' a b:c d e:f '
๋ก ๋ด๋ณด๋ด์ง๋๋ค.set -s ':' ENV_VAR a b:c d e:f $ENV_VAR
. ์ด ๊ฒฝ์ฐ $
์ ์๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๋ชฉ๋ก ๋์ ENV_VAR์ ๋ฌธ์์ด ๊ฐ์ ์ถ์ถํ๋ ๊ฒ์ผ๋ก ์ ์ํ๋ฉด ์ด ๋ช
๋ น์ $ENV_VAR์ ์๋ ๋ชฉ๋ก์์ ๋ณํ๋ ๋ฌธ์์ด ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ set -s ':' ENV_VAR a b:c d e:f:$ENV_VAR
๋ ์๋ง๋ ๋น์ ์ด ์ ๋ง๋ก ์ํ๋ ๊ฒ( f
:
์ฃผ๋ชฉ); ENV_VAR(๋ฌธ์์ด์ด ์๋ ๋ชฉ๋ก)์ ๋ณ์๋ฅผ ์ถ์ถํ๋ ๊ฒ์ผ๋ก ์ ์ํ๋ฉด ํ์ด์ฌ์์์ ๊ฐ์ด ๋ชฉ๋ก ํ์ฅ ์์
์ด ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์์ ๊ฒฝ์ฐ ENV_VAR
๊ฐ ์ด์ ์ ['x', 'y']
์๋ค๋ฉด ์ด ์์
ํ์ ENV_VAR
๋ ['a b', 'c d e', 'f', 'x', 'y']
๊ฐ ๋ฉ๋๋ค. ENV_VAR
์ ์ด์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ':'
๊ฐ ์๋๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? ์ ์์ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ์์
์ ์ํํ๊ณ ์๋์ง ํ์ธํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ฑ
์์
๋๋ค. ์๋ฅผ ๋ค์ด ์๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ':'
๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ ํ์ฌ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์๋ ๊ตฌ๋ถ ๊ธฐํธ๋ก ๋ณ๊ฒฝํ์ฌ ์ผ๊ด๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํ์์ ๊ฒฝ์ฐ ์ด ๋ฐฐ์ด์ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์๋ ๋ฐฐ์ด(๋ฌด์์ด๋ ๊ด๊ณ์์ด)์์ ':'
์ค์ ํฉ๋๋ค.set --change-separator ':' ENV_VAR
. ENV_VAR์ด ์กด์ฌํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ 0 ์ด์ธ์ ์ค๋ฅ ์ฝ๋์ ํจ๊ป ์ข
๋ฃ๋์ด์ผ ํฉ๋๋ค. ์ฝ๊ณ ๋ช
ํํฉ๋๋ค.set --view-separator ENV_VAR
.๊ฒ๋ค๊ฐ ์ด ๋ฌธ์ ๋ ๋ช ๋ฐฑํ๊ณ ์๊ธ ํ๋ฉฐ ์ฌ์ฉ์์๊ฒ ํฐ ๊ณ ํต์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํฐ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๊ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฌ์ค ์ ๋ ์ด ํฐ ๋ฌธ์ ๋ฅผ ์ ์ธํ๊ณ ๋ ํ์ฌ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ค๋ฅธ(์์ฃผ ์์) ๋ฌธ์ ์ ์ง๋ฉดํ์ง ์์์ต๋๋ค.
์ ๋ง ์ด ๋ฌธ์ ๋ ๋ช ๋ฐฑํ๊ณ ์๊ธํ๋ค๊ณ ์๊ฐํฉ๋๋ค
@thuzhf : ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๊ณผ๋ ํ๊ฐํ๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
ํ ๊ฐ์ง ์ด์ ๋ #5169์ ๋ฌธ์ ๊ฐ $LD_LIBRARY_PATH์ ์์์ง๋ง ์ค์ ๋ก๋ ๋ฌผ๊ณ ๊ธฐ ๋ชฉ๋ก์ด ์๋๊ธฐ ๋๋ฌธ์
๋๋ค! ๋ค๋ฅธ ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก set LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/some/path"
์ ๊ฐ์ด ์ค์ ํด์ผ ํฉ๋๋ค.
Fish๋ ์ ํํ 3๊ฐ์ ์์/๋ด๋ณด๋ธ ๋ณ์๋ฅผ ์๋์ผ๋ก ๋ชฉ๋ก์ผ๋ก ๋ฐ๊ฟ๋๋ค.
$PATH, $MANPATH ๋ฐ $CDPATH. ๊ทธ๋ฆฌ๊ณ ์ ํํ ์ด ๋ชฉ๋ก์ ๋ด๋ณด๋ผ ๋ ":" ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ์์ต๋๋ค.
$LD_LIBRARY_PATH์ ๊ฐ์ ๋ค๋ฅธ "ํ์คํ๋" ๋ณ์๋ fishscript์ ๋ชฉ๋ก์ผ๋ก ์ฒ๋ฆฌ๋์ด์๋ ์ ๋๋ฏ๋ก ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ํ์คํ๋์ง ์์ ๋ณ์๋ ์ํ๋ ๋๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์๋ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ผ๋ฏ๋ก ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ์ค์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
@faho ๋ช ์พํ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ ์ ๋ง ๋ง์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ข์, ๋๋ ์ด ๋ฌธ์ ๊ฐ ๋๋ฅผ ์ํด ํด๊ฒฐ๋์๋ค๊ณ ๋งํ ์ ์๋ค.
#2090์ ์ค๋ช ๋ MANPATH ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์์ต๋๋ค. ์๋๋ฆฌ์ค๋ ์์คํ ๊ฒฝ๋ก๋ฅผ ๊ณ์ ์ฌ์ฉํ๋๋ก manpath์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
bash์์๋ ์ด๊ฒ์ export MANPATH="$MANPATH:/new/path"
๋ก ์์ฑํฉ๋๋ค. MANPATH๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด ์ถ๊ฐ๋ฉ๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด ์ฝ๋ก ์ด ์์ ์ถ๊ฐ๋๋ฉฐ ์ด๋ ์์คํ
๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ฌ๋ ๊ณ ์ ์ ํ์์
๋๋ค. ์ด ๊ตฌ๋ฌธ์ ๋ฌผ๊ณ ๊ธฐ์์ ์๋ํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ MANPATH๊ฐ ๋ฐฐ์ด์ด๋ฏ๋ก "$MANPATH"์ ์ฝ๋ก ๋์ ๊ณต๋ฐฑ์ด ์๋ค๋ ๊ฒ์
๋๋ค.
"์ฐ๊ฒฐ๋ ๋ณ์" ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด MANPATH๋ฅผ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ก ๋ฏธ๋ฌ๋งํ๋ ๋ฐฐ์ด๋ก fish_manpath
๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ ์์ ํ ๋ฌผ๊ณ ๊ธฐ ์คํฌ๋ฆฝํธ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ MANPATH๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๊ฒฝ๋ก์ ์ ์ฌํ ๋ณ์์ ๋ํด ์ด ์์
์ ์ํํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ฉฐ ์ด๋ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ด ๋ช
ํํ์ง ์์ ์ค์ํ ํธํ์ฑ ์ค๋จ์ด ๋ ๊ฒ์
๋๋ค. ๋ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด zsh์ manpath
array-variable์ ์ถ๊ฐํ๊ธฐ๊ฐ ์ด์ํ๋ฏ๋ก ์ ์กด์ฌํ๋์ง ๋ช
ํํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ด ์ ์์ด MANPATH ์ํฉ์ ๋ ์ข๊ฒ ๋ง๋ค๊ฑฐ๋ ๋ ๋์๊ฒ ๋ง๋ค์ง ์์ต๋๋ค. ๋๋ ํ ์ผ์ ํํธํ๊ณ MANPATH์ ์ถ๊ฐํ๊ธฐ ์ํ ์ฌ์ด ์ด์ผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
set -q MANPATH || set MANPATH ''
set -x MANPATH $MANPATH /new/path
config.fish์ ๋ถ์ฌ๋ฃ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ด ์ ์์ด MANPATH ์ํฉ์ ๋ ์ข๊ฒ ๋ง๋ค๊ฑฐ๋ ๋ ๋์๊ฒ ๋ง๋ค์ง ์์ต๋๋ค. ๋๋ ํ ์ผ์ ํํธํ๊ณ MANPATH์ ์ถ๊ฐํ๊ธฐ ์ํ ์ฌ์ด ์ด์ผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@ridiculousfish : ์ค์ ๋ก ํ ๋จ๊ณ ๋ ๋์๊ฐ๋ ๊ฒ์ ์๊ฐํ๊ณ ์์ต๋๋ค. ํ ๋น ์์๋ ":"์์ ์ด๋ฌํ ํน์ ๋ณ์๋ฅผ ๋ถํ ํ๊ณ ์ธ์ฉ๋ ํ์ฅ์์ ๊ณต๋ฐฑ ๋์ ":"์ผ๋ก ๊ฒฐํฉํฉ๋๋ค.
์ฆ, set -gx MANPATH "$MANPATH:/new/path"
ํ๋ฉด ๋ฌผ๊ณ ๊ธฐ๊ฐ ์๋์ผ๋ก ๋ถํ ์ ์ํํ์ฌ set -gx MANPATH "" /new/path
์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
์ด์ ์ด๊ฒ์ ":"๊ฐ $MANPATH(๋ฐ $PATH ๋ฐ $CDPATH)์ ๊ฒฝ๋ก์ ๋ํ๋ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ ์๋ ์ ํธ๋ฆฌํฐ๋ฅผ ์ค๋จ์ํค๊ธฐ ๋๋ฌธ์ ์ด์จ๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค !
๊ทธ๊ฒ์ ๋ํ ์ฐ๋ฆฌ๊ฐ ์ธ์ ๊ฐ ํน๋ณํ ์ฒ๋ฆฌ๋ฅผ ์ ๊ฑฐํ ์ ์๊ฒ ํด์ค ๊ฒ์
๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ ๊ทธ๊ฒ์ ์ฒ๋ฆฌํ๋ ๊ต์ฐจ ํธํ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค - :
๋ก ํ ๋นํ๊ณ (string split : -- $MANPATH)
์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
@faho ์์ด๋์ด๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ป๊ฒ ๋ณ์๋ฅผ ์ด ํน๋ณ ๋์ฐ๋ฅผ ๋ฐ๋ ๊ฒ์ผ๋ก ํ์ํ ๊น์? splitenv
ํ์๊ฒ ์ต๋๊น?
์ฌ์ฉ์๋ ์ด ํน๋ณ ๋์ฐ๋ฅผ ๋ฐ๋ ๋ณ์๋ฅผ ์ด๋ป๊ฒ ํ์ํ ๊น์?
๋ด ์๊ฐ์ ์ค์ ๋ก ๋งํน์ ์ ํ ํ์ฉํ์ง ์๋ ๊ฒ์ด์์ต๋๋ค. $PATH et al์ ๋ํ ํน๋ณํ ๋์์ผ๋ก ๋์ญ์์ค. ๊ทธ๋ฌ๋ฉด ๋ฏธ๋์ ์ด๋ ์์ ์์ ๋ชฉ๋กํ์์ ๋ฒ์ด๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ๋ณ์์ ๋ํด ์ด๊ฒ์ ํ์ฉํ๋ฉด ๋ค๋ฅธ ๋ณ์์๋ ๋์์ด ๋๋ค๋ ๊ฒ์ ์ดํดํ๊ฒ ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ ์ ๋ด $EDITOR๊ฐ ์ธ๋ถ์์ ํธํ์ฑ์ ์ํด ํ๋์ ์์( set EDITOR "emacs -nw"
)๋ก ์ค์ ๋์๋ค๊ณ ๋งํ์ต๋๋ค. ๋๊ตฌ์ด์ง๋ง ๋ฌผ๊ณ ๊ธฐ๋ ๊ทธ๊ฒ์ด ๋ชฉ๋ก์ด๋ผ๋ฉด ๋ ์ข์ํ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ PATH์ ์ ์ฌํ์ง ์์ ๊ฒฝ์ฐ(๊ทธ๋ฆฌ๊ณ ์ด๋ฆ์ด PATH๋ก ๋๋๋ ๊ฒฝ์ฐ๋ผ๊ณ ๊ฐ์ ํ๋ฉด ์๋ง ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค) ๊ตฌ๋ถ ๊ธฐํธ๋ก _space_๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
splitenv๊ฐ ํ ๊ฒ์ธ๊ฐ?
๋๋ ์ด๊ฒ์ ์ํด ๋ค๋ฅธ ๋ด์ฅ์ ๋์ ํ๋ ๊ฒ์ ์ ๋ง๋ก ์ข์ํ์ง ์์ผ๋ฏ๋ก ์๋ง๋ argument-to-set ์ต์ ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
๋๋ "ํน์ ์ผ์ด์ค PATH/MANPATH/CDPATH๊ฐ ์ด์ํ๋ค. ์ฐ๋ฆฌ๋ ๋ ์ผ๋ฐ์ ์ธ ์๋ฃจ์ ์ด ํ์ํ๋ค"๋ ๋ฐ ๋์ํฉ๋๋ค.
ํน์ ์ผ์ด์ค PATH/MANPATH/CDPATH๋ฅผ ์ค์งํ ๊ฒ์ ์ ์ํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ค๋ฅธ ์กฐ๊ฐ ๊ป์ง๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก (์ด๋ฅ ์ต์ข ์ฌ์ฉ์์ ์ํด) ์ทจ๊ธ๋ฉ๋๋ค. $PATH(๋ฐ ๊ธฐํ)๋ ์ฝ๋ก ์ด ํฌํจ๋ ๋จ์ผ ๋ฌธ์์ด(๋๋ ์์ ์ ๋ฌธ ์ฉ์ด๋ก ๊ธธ์ด๊ฐ 1์ธ ๋ชฉ๋ก)์ ๋๋ค. ์ด๋ฌํ ๊ฒ๋ค์ด ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ด ์๋๋ผ ๋ฌผ๊ณ ๊ธฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ธ๊ธํ๊ณ ์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ๋๋ ๋ฌผ๊ณ ๊ธฐ ๋ด๋ถ์ ๊ตฌํ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ชจ๋ฆ ๋๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์์กดํ์ฌ ๋ฌธ์ ๋ฅผ ์ง์ ํฉ๋๋ค.
๋ฌผ๋ก ํ์ํธํ์ฑ์ด ์๋ค๋ ๋จ์ ์ด ์์ง๋ง, ์ฌํํจ๊ณผ ์ฐ์ํจ ๋ฉด์์ ํฐ ์ด๋์ ๋ณผ ์ ์๋ค๋ ์ ์์ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด # 2090๋ ๋ค๋ฃฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ค๋ค ์ด๋ป๊ฒ ์๊ฐํ์ธ์?