Fish-shell: ํŠน์ˆ˜ ์ผ€์ด์Šค PATH/MANPATH/CDPATH๊ฐ€ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. zsh "์—ฐ๊ฒฐ๋œ" ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2012๋…„ 12์›” 11์ผ  ยท  52์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: fish-shell/fish-shell

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๊ฐ€ ์š”์†Œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ํŠน๋ณ„ํžˆ ์ทจ๊ธ‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

enhancement

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

\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 ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋‘ ๊ฐ€์ง€ ์ด์œ ์—์„œ ํ‹€๋ฆผ์—†์œผ๋ฉฐ ์ด ๋‘ ๊ฐ€์ง€ ์ด์œ  ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ set PYTHONPATH /activated/python/tree $PYTHONPATH ๋ผ๊ณ  ๋งํ•  ๋•Œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ง๊ฐํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์นœ์ˆ™ํ•œ ๊ฐœ๋…/๊ด€์šฉ๊ตฌ์ธ i = 2 + i ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. (ํ•˜์ง€๋งŒ += ์™€ ๊ฐ™์€ ๋ฐ”๋กœ ๊ฐ€๊ธฐ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์œผ๋ฏ€๋กœ ์•„๋ž˜์— --append ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.) ๋ฐ˜๋ฉด์— ์‚ฌ๋žŒ๋“ค์€ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋ฅผ ์ƒ๊ฐํ•  ๋•Œ ๋ถ„ํ• ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์— ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ „์ฒด ๋ชฉ๋ก์„ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ๋„ฃ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์Œ์†์œผ๋กœ ๊ทธ๋“ค์€ ๊ตฌ๋ถ„์ž๋ฅผ "๋‚ด๋ถ€" ๋˜๋Š” "์„ ํ˜ธํ•˜๋Š”" ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝ์Šต๋‹ˆ๋‹ค.
  2. ์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด ์ผ๋ฐ˜ 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

์‹œ์‚ฌ์ /ํ›„์† ์งˆ๋ฌธ/๊ธฐํƒ€:

  1. ์ด๊ฒƒ์€ ํ˜„์žฌ ์ œ์•ˆ๊ณผ ์ƒ๋‹นํžˆ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ __fish_sep_PYTHONPATH ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅ).

    • (์„ ํƒ ์‚ฌํ•ญ) ํ˜„์žฌ --no-modify ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ชฉ๋ก์˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ด์œ  (1) ๋•Œ๋ฌธ์— --append ๋ฐ --prepend ํ”Œ๋ž˜๊ทธ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ด๊ฒƒ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์˜ค๋Š˜๋‚  ๋ฌผ๊ณ ๊ธฐ์—์„œ ์ถ”๊ฐ€ ๋ฐ ์ถ”๊ฐ€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋ฌผ๊ณ ๊ธฐ์—์„œ ๋ชฉ๋ก์€ ์ตœ์†Œํ•œ ์ผ๋ฅ˜ ์‹œ๋ฏผ์ฒ˜๋Ÿผ _์ทจ๊ธ‰_๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชฉ๋ก ํ‘œํ˜„์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ž์—ด ํ‘œํ˜„์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ตฌ๋ถ„์ž๊ฐ€ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋ถ„ํ• ์ด ๋ถˆ๊ฐ€ํ”ผํ•œ ๊ฒฝ์šฐ). ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ , ์—์„œ : ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ["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 ๊ธฐ๋Šฅ ์ œํ’ˆ๊ตฐ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ๊ฒƒ์ด์ง€๋งŒ ๋น„์šฉ์— ๋น„ํ•ด ์ œ ์ƒ๊ฐ์— ์ถฉ๋ถ„ํ•œ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๊ธธ์–ด์„œ ์œ„์˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ธ์ •์„ ๋†“์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ™์€ ํŽ˜์ด์ง€์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค! ์œ„์—์„œ๋„ ๋Œ€๋ถ€๋ถ„์˜ ์šฐ๋ ค ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ๊ฐ๊ฐ์˜ ์šฐ๋ ค ์‚ฌํ•ญ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


1. 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 ๋„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

2. ์ „ํ™˜ ํ”„๋กœ์„ธ์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๊นŒ?

์ด์ „ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ \x1e ์ด๊ณ  ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ $ : ์ด๋ฉฐ ๋ฌผ๊ณ ๊ธฐ ๋ชฉ๋ก ["hello", "world"] ( hello\x1eworld ๋กœ ๋‚ด๋ณด๋ƒ„)์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•(" ๋ณ€ํ™˜ ์˜ต์…˜ ")์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ["hello", "world"] ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ["hello", "world"] ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค( hello,world ๋กœ ๋‚ด๋ณด๋ƒ„).
    ์žฅ์ : ๋ชฉ๋ก ํ‘œํ˜„์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. hello\x1eworld ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ["hello\x1eworld"] ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค( hello\x1eworld ๋กœ ๋‚ด๋ณด๋ƒ„).
    ์žฅ์ : ๋‚ด๋ณด๋‚ธ ๊ฐ’ ํ‘œํ˜„์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ตฌํ˜„ ๊ด€์ ์ด ์•„๋‹ˆ๋ผ UI ๊ด€์ ์—์„œ ๋‚˜์˜จ ๊ฒƒ์ž„์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์งˆ๋ฌธ์—์„œ ๊ตฌํ˜„์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. _์ฐธ๊ณ : ์ด ๋‹ต๋ณ€์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋”ฐ๋ผ ์œ„์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์€ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!_

๋ฌผ๊ณ ๊ธฐ ๋‚ด์—์„œ. ์ฒซ์งธ, ์šฐ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ๋ฌผ๊ณ ๊ธฐ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ๋ชฉ๋ก์€ ์ผ๊ธ‰์ด๋ฉฐ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋‘˜ ๋‹ค ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ "ํ•ด์•ผ ํ•œ๋‹ค"๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์—์„œ ๋ณด๋Š” ๊ฒƒ์ด๋ฉฐ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ด๋ฅผ ์‚ฌ์‹ค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.)

vars์˜ ๋‚ด๋ณด๋‚ด๊ธฐ ํ˜•์‹ ๋ณ€๊ฒฝ ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฝ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๋‚ด๋ณด๋‚ธ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๊ณ ๊ธฐ์—์„œ ์ƒ์„ฑ๋œ ๋ชฉ๋ก์˜ ๊ฒฝ์šฐ ๋ชฉ๋ก์œผ๋กœ์„œ์˜ ๋ณ€์ˆ˜์˜ ์˜๋ฏธ๊ฐ€ ์ค‘์š”ํ•˜๊ณ  ์ž˜ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ชฉ๋ก ํ‘œํ˜„์„ ๋ณด์กดํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ณ€ํ™˜ ์˜ต์…˜ 1 ์„ ํ™•์‹คํžˆ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

vars์˜ ๊ฐ€์ ธ์˜ค๊ธฐ ํ˜•์‹ ๋ณ€๊ฒฝ ๊ทธ๋Ÿฌ๋‚˜ PATH ์™€ ๊ฐ™์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ฒ˜์Œ์— ๋ฌผ๊ณ ๊ธฐ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ์ด๋ฏธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก์— ๋Œ€ํ•ด ํ•ด๋‹น ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ฌผ๊ณ ๊ธฐ์—๊ฒŒ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ณ€ํ™˜ ์˜ต์…˜ 2 ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.1 ์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์„ ์•Œ ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋ฌผ๊ณ ๊ธฐ๋Š” ์‹ค์ œ๋กœ ๋ชฉ๋ก์„ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. x hello\x1eworld #$ ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ์ œ์•ˆ์— x ๋ณ€์ˆ˜์˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ณ€์ˆ˜ __fish_delimiter_x $ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ \x1e ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ์˜ต์…˜ 1์˜ ๊ฒฝ์šฐ:

  1. ์ด์ „ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋ถ„ํ• ํ•˜๋ฉด ๊ตฌํ˜„ ์–ธ์–ด(C++)์—์„œ ์‹ค์ œ ๋ชฉ๋ก์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก์„ ๊ฒฐํ•ฉํ•˜๋ฉด ์ƒˆ ๋ฌธ์ž์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  3. ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ __fish_delimiter_x ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ์˜ต์…˜ 1์˜ ๊ฒฝ์šฐ ๋™๋“ฑํ•œ ๊ตฌํ˜„:

  1. ๋ณ€์ˆ˜์—์„œ ์ด์ „ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  2. ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ __fish_delimiter_x ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ์˜ต์…˜ 2์˜ ๊ฒฝ์šฐ:

  1. ์ƒˆ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ __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 ).
  • ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ๋ณ€์ˆ˜ ๋ฒ”์œ„์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊นŒ๋‹ค๋กœ์šด ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๋ฒ”์šฉ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ฌธ์ œ. uvar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ํ˜„์žฌ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— uvar๊ฐ€ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๊ธฐ์–ตํ•˜๋„๋ก ๊ฐ€๋ฅด์ณ์•ผ ํ•˜๊ณ  --no-modify ์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ€๋ฅด์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋ทฐ์—์„œ ๋‚˜๋Š” @faho ์˜ splitenv ์•„์ด๋””์–ด ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. splitenv name ๋Š” ๊ธฐ์กด ๋ณ€์ˆ˜๋ฅผ ์ฝœ๋ก ์œผ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ๋†€๋ž๋„๋ก ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋Š” ํŠน๋ณ„ํ•œ ์ง€์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋งŒํผ ๋งค์šฐ ๋“œ๋ญ…๋‹ˆ๋‹ค.

๋‹จ์ ์€ ๋ฌผ๊ณ ๊ธฐ๋กœ ๋‚ด๋ณด๋‚ธ ๋ฐฐ์—ด์ด ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์ด๊ฒƒ์ด ๋“œ๋ฌผ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ”ผํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด ์ด splitenv ํ•ฉ๋ณ‘์ฆ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ์ด๋ฆ„์ด PATH๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (์˜ˆ: LD_LIBRARY_PATH, PYTHONPATH ๋“ฑ)๋กœ ์ฝœ๋ก  ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ๊ฑฐ์˜ ํ•ญ์ƒ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋ฌผ๋ฆฐ ์‚ฌ๋žŒ์€ string join ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ(์ •๋ง๋กœ faho์˜ ์ œ์•ˆ):

  • ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ฐฐ์—ด์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋” ์ด์ƒ ASCII ๋ ˆ์ฝ”๋“œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ฝœ๋ก ์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋ถ„ํ• ํ•˜๋Š” splitenv ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌผ๊ณ ๊ธฐ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • PATH๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋ฅผ ํ–ฅ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ ๊ณ ํ†ต์„ ๋ฏธ๋‹ˆ๋ฉ€ํ•˜๊ณ  ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

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 ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

  1. --no-modify ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: --change-separator ).
  2. ์ผ๋ถ€ ์ฝ”๋„ˆ/์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž˜ ์ •์˜๋˜์ง€ ์•Š์€ ๊ตฌ๋ฌธ ๋•Œ๋ฌธ์ด๋ฉฐ ๊ตฌ๋ฌธ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ •์˜ํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

    1. ๊ธฐ๋ณธ ์•„์ด๋””์–ด: ๋ชจ๋“  var(๋ชฉ๋ก)๋Š” ์ •์˜๋  ๋•Œ ์ž์ฒด ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์€ ' ' ). ์ด ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋Š” ์ด var๊ฐ€ ๋ฌธ์ž์—ด์—์„œ ์ƒ์„ฑ๋˜๊ณ  ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ด๋Š” Python์˜ join() ํ•จ์ˆ˜์™€ ๊ฐ™์€ ์ผ๋ถ€ ์–ธ์–ด์—์„œ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค). var๋Š” ๋‚ด๋ณด๋‚ผ ๋•Œ ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ์›ํ•  ๋•Œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

    2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•



      1. set ENV_VAR a b c . -s ๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ' ' ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


      2. set -s ':' ENV_VAR . ์ด ๊ฒฝ์šฐ ENV_VAR์€ ๋นˆ ๋ชฉ๋ก์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.


      3. 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 ' ๋กœ ๋‚ด๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค.


      4. 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 ์˜ ์ด์ „ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ':' ๊ฐ€ ์•„๋‹ˆ๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ „์ž์˜ ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›๋ž˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ':' ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์›๋ž˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ผ๊ด€๋œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ ์ด ๋ฐฐ์—ด์˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์›๋ž˜ ๋ฐฐ์—ด(๋ฌด์—‡์ด๋“  ๊ด€๊ณ„์—†์ด)์—์„œ ':' ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.



    3. ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•



      1. set --change-separator ':' ENV_VAR . ENV_VAR์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ 0 ์ด์™ธ์˜ ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ณ  ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.



    4. ๊ตฌ๋ถ„์ž๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•



      1. 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๋„ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋“ค ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

5245๊ฐ€ ๋ณ‘ํ•ฉ๋˜์–ด ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰