๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํฌ์–ด๊ทธ๋ผ์šด๋“œ vs ๋ฐฑ๊ทธ๋ผ์šด๋“œ -์ž‘์„ฑ์ค‘-

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 8. 29.

"ํฌ์–ด๊ทธ๋ผ์šด๋“œ"์™€ "๋ฐฑ๊ทธ๋ผ์šด๋“œ"๋Š” ์ฃผ๋กœ ์ปดํ“จํ„ฐ ์ž‘์—…, ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)์™€ ๊ด€๋ จ๋œ ์šฉ์–ด์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐœ๋…์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

ํฌ์–ด๊ทธ๋ผ์šด๋“œ (Foreground)

  • ์ •์˜: ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—…์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•:
    • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค: ํฌ์–ด๊ทธ๋ผ์šด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์ž…๋ ฅ(ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๋“ฑ)์„ ์ฆ‰์‹œ ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • ์šฐ์„ ์ˆœ์œ„: ๋ณดํ†ต ์‹œ์Šคํ…œ์€ ํฌ์–ด๊ทธ๋ผ์šด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•ด, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์›ํ™œํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ: ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ธํ„ฐ๋„ท์„ ํƒ์ƒ‰ํ•˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์€ ํฌ์–ด๊ทธ๋ผ์šด๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ๊ทธ๋ผ์šด๋“œ (Background)

  • ์ •์˜: ์‚ฌ์šฉ์ž์™€ ์ง์ ‘์ ์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๊ณ , ๋ณด์ด์ง€ ์•Š๋Š” ์ƒํƒœ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ง•:
    • ๋น„๊ฐ€์‹œ์„ฑ: ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์€ ์‚ฌ์šฉ์ž ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ํ‘œ์‹œ๋˜๋”๋ผ๋„ ํฌ์–ด๊ทธ๋ผ์šด๋“œ์— ์žˆ๋Š” ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋’ค์— ์ˆจ์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์šฐ์„ ์ˆœ์œ„: ๋ณดํ†ต ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋œ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜๋ฉฐ, ํฌ์–ด๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ: ๋ฐ”์ด๋Ÿฌ์Šค ๊ฒ€์‚ฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ์Œ์•… ์žฌ์ƒ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๋•Œ ์Œ์•…์„ ์žฌ์ƒํ•˜๋Š” ๊ฒƒ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด:

  • ํฌ์–ด๊ทธ๋ผ์šด๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€๊ธˆ ๋ณด๊ณ , ์กฐ์ž‘ํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์กฐ์ž‘ํ•˜์ง€ ์•Š์ง€๋งŒ ์‹œ์Šคํ…œ์ด ๋’ค์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐœ๋…์€ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ์ž์› ๋ฐฐ๋ถ„๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 
 
4o

๋‚˜์˜ ๋ง:

์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ฒฝ๋กœ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ด์Šˆ๊ฐ€ ์žˆ๋Š”๋ฐ ํฌ์–ด๊ทธ๋ผ์šด๋“œ์ผ๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋Š”๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด ๊ฒฝ๋กœ๋ฅผ ๋ชป ์ฝ๋”๋ผ๊ณ 
 

ChatGPT์˜ ๋ง:

ChatGPT

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์—์„œ ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ(Current Working Directory, CWD)๊ฐ€ ํฌ์–ด๊ทธ๋ผ์šด๋“œ์—์„œ์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

  1. ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ฐจ์ด: ํฌ์–ด๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๋ณดํ†ต ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ง€์ •ํ•œ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ƒ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์˜ ํ™˜๊ฒฝ: ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—…์ด ์‹คํ–‰๋  ๋•Œ๋Š” ํฌ์–ด๊ทธ๋ผ์šด๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์ด ํŠน์ • ์‰˜์ด๋‚˜ ์Šค์ผ€์ค„๋Ÿฌ(์˜ˆ: ํฌ๋ก (Cron))์— ์˜ํ•ด ์‹คํ–‰๋  ๊ฒฝ์šฐ, ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์‹œ์Šคํ…œ์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์‚ฌ์šฉ:
    • ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋Œ€์‹  ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์™€ ํฌ์–ด๊ทธ๋ผ์šด๋“œ์—์„œ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    bash
    ์ฝ”๋“œ ๋ณต์‚ฌ
    # ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์˜ˆ์‹œ /home/user/project/data/file.txt
  2. ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •:
    • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์Šคํฌ๋ฆฝํŠธ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ cd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    bash
    ์ฝ”๋“œ ๋ณต์‚ฌ
    # ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ • cd /home/user/project
  3. ์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์—์„œ ๊ฒฝ๋กœ ์„ค์ •:
    • ์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Bash ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    bash
    ์ฝ”๋“œ ๋ณต์‚ฌ
    # ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ ์„ค์ • SCRIPT_DIR=$(dirname "$0") cd "$SCRIPT_DIR"
    Python ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ:
  4. python
    ์ฝ”๋“œ ๋ณต์‚ฌ
    import os import sys # ์Šคํฌ๋ฆฝํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ script_dir = os.path.dirname(os.path.abspath(__file__)) os.chdir(script_dir)

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํฌ์–ด๊ทธ๋ผ์šด๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ชจ๋‘ ๋™์ผํ•œ ๊ฒฝ๋กœ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒฝ๋กœ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€