XNUMX๊ฐ€์ง€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ Bash ๋ณ€์ˆ˜

์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๋ฉ”๋ชจ๋ฅผ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค. ๋œ ์•Œ๋ ค์ง„ ๊ธฐ๋Šฅ bash, ์—ฌ๋Ÿฌ๋ถ„์ด ๋ชจ๋ฅผ ์ˆ˜๋„ ์žˆ๋Š” XNUMX๊ฐ€์ง€ ๋ณ€์ˆ˜๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

1) PROMPT_COMMAND

๋‹ค์–‘ํ•œ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๋งˆ๋‹ค ์‰˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•„๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋งŽ์€ ๋ณต์žกํ•œ ํ”„๋กฌํ”„ํŠธ ์กฐ์ž‘์ž๋Š” ์ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กฌํ”„ํŠธ์— ํ‘œ์‹œ๋˜๋Š” ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ์…ธ์—์„œ ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์„ธ์…˜์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

๋‹น์‹ ์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ history ์ฝ˜์†”์—์„œ๋Š” ์ด์ „์— ๊ท€ํ•˜์˜ ๊ณ„์ •์—์„œ ์‹คํ–‰๋œ ๋ช…๋ น ๋ชฉ๋ก์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

์ด ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฉด ์ƒˆ ํ•ญ๋ชฉ์€ ๋ช…๋ น๊ณผ ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๋ฏ€๋กœ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1871 ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•œ ์‹œ๊ฐ„: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•œ ์‹œ๊ฐ„: 01/05/19 13:38:19 cur bbc.co.uk 1873 ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•œ ์‹œ๊ฐ„: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 ๋‹ค์Œ์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค: 01/05/19 13:39:18 ์ปฌ -vvv bbc.co.uk 1876 ๋‹ค์Œ์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค: 01 /05/19 13:39:25 sudo su -

ํ˜•์‹์ด ๋‹ค์Œ ๋ฌธ์ž์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. man date.

3) CDPATH

๋ช…๋ น์ค„์—์„œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๋ ค๋ฉด ์ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ PATH, ๋ณ€์ˆ˜ CDPATH ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๊ฒฝ๋กœ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ cd ์ƒ๋Œ€ ๊ฒฝ๋กœ(์ฆ‰, ์•ž์— ์Šฌ๋ž˜์‹œ๊ฐ€ ์—†์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‰˜์€ ๋กœ์ปฌ ํด๋”์—์„œ ์ผ์น˜ํ•˜๋Š” ์ด๋ฆ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค. CDPATH ์ด๋™ํ•˜๋ ค๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ์ œ๊ณตํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ํ•˜๋ฉด CDPATH ์ด๋Ÿฐ ์‹์œผ๋กœ :

$ CDPATH=/:/lib

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

$ cd /home
$ cd tmp

๊ทธ๋Ÿฌ๋ฉด ๋‹น์‹ ์€ ํ•ญ์ƒ /tmp ๋‹น์‹ ์ด ์–ด๋””์— ์žˆ๋“  ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชฉ๋ก์—์„œ ๋กœ์ปฌ ํ•ญ๋ชฉ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค(.) ํด๋”๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ํด๋”๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. tmp ํ‰์†Œ๋Œ€๋กœ ์ด๋™ํ•˜์„ธ์š”.

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

์ด๋Š” ์ข€ ๋” ์นœ์ˆ™ํ•œ ๋ณ€์ˆ˜์— ๋กœ์ปฌ ํด๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์„ ๋•Œ ๋Š๊ผˆ๋˜ ํ˜ผ๋ž€๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. PATH...ํ•˜์ง€๋งŒ ๋‹ค์šด๋กœ๋“œํ•œ ์ผ๋ถ€ ์ฝ”๋“œ์—์„œ ๊ฐ€์งœ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋„๋ก ์†์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ PATH ๋ณ€์ˆ˜์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒƒ์€ ์‹œ์ž‘์ ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

ํ˜น์‹œ ํƒ€์ดํ•‘์„ ํ•˜๋‹ค๊ฐ€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? exit ํ˜„์žฌ bash ์‰˜์—์„œ ๋‹ค๋ฅธ "์ƒ์œ„" ์‰˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ฝ˜์†” ์ฐฝ์„ ์™„์ „ํžˆ ๋‹ซ์Šต๋‹ˆ๊นŒ?

์ด ๋ณ€์ˆ˜๋Š” bash ์‰˜์— ์–ผ๋งˆ๋‚˜ ๊นŠ์ด ์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š”์ง€ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•˜๋ฉด 1๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

$ echo $SHLVL
1

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ ์…ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ˆซ์ž๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

$ bash
$ echo $SHLVL
2

์ด๋Š” ์ข…๋ฃŒํ• ์ง€ ๋ง์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ค‘์ฒฉ๋œ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5) LINENO

์ด ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. LINENO, ์ง€๊ธˆ๊นŒ์ง€ ์„ธ์…˜์—์„œ ์‹คํ–‰๋œ ๋ช…๋ น ์ˆ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

์ด๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค„ ์‚ฝ์ž… echo DEBUG:$LINENO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ์˜ ํ˜„์žฌ ์œ„์น˜(๋˜๋Š” ์œ„์น˜ ์—†์Œ)๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6) REPLY

๋‚˜์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ:

$ read input
echo do something with $input

๋ณ€์ˆ˜ ์ƒ์„ฑ์— ๋Œ€ํ•ด ์ „ํ˜€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

$ read
echo do something with $REPLY

์ด๊ฒƒ์€ ๊ฐ™์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค.

7) TMOUT

๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์— ๋„ˆ๋ฌด ์˜ค๋ž˜ ๋จธ๋ฌผ๊ฑฐ๋‚˜ ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ํ„ฐ๋ฏธ๋„์—์„œ ์œ„ํ—˜ํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ด ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ณดํ˜ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •๋œ ์ดˆ ๋™์•ˆ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ์‰˜์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ด๊ฒƒ์ด ๋Œ€์•ˆ์ด๋‹ค. sleep 1 && exit:

$ TMOUT=1

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€