ํฌ์ด๊ทธ๋ผ์ด๋ vs ๋ฐฑ๊ทธ๋ผ์ด๋ -์์ฑ์ค-
"ํฌ์ด๊ทธ๋ผ์ด๋"์ "๋ฐฑ๊ทธ๋ผ์ด๋"๋ ์ฃผ๋ก ์ปดํจํฐ ์์ , ํ๋ก์ธ์ค ๊ด๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)์ ๊ด๋ จ๋ ์ฉ์ด์ ๋๋ค. ์ด ๋ ๊ฐ๋ ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ํฌ์ด๊ทธ๋ผ์ด๋ (Foreground)
- ์ ์: ํ์ฌ ์ฌ์ฉ์๊ฐ ์ง์ ์ํธ์์ฉํ๊ณ ์๋ ์์ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธํฉ๋๋ค.
- ํน์ง:
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค: ํฌ์ด๊ทธ๋ผ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฉด์ ํ์๋๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์ ๋ ฅ(ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ)์ ์ฆ์ ๋ฐ์ต๋๋ค.
- ์ฐ์ ์์: ๋ณดํต ์์คํ ์ ํฌ์ด๊ทธ๋ผ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด, ์ฌ์ฉ์ ๊ฒฝํ์ ์ํํ๊ฒ ์ ์งํฉ๋๋ค.
- ์์: ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ์ธํฐ๋ท์ ํ์ํ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ์ด๊ทธ๋ผ์ด๋์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ (Background)
- ์ ์: ์ฌ์ฉ์์ ์ง์ ์ ์ผ๋ก ์ํธ์์ฉํ์ง ์๊ณ , ๋ณด์ด์ง ์๋ ์ํ์์ ์คํ๋๋ ์์ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธํฉ๋๋ค.
- ํน์ง:
- ๋น๊ฐ์์ฑ: ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ฌ์ฉ์ ํ๋ฉด์ ํ์๋์ง ์๊ฑฐ๋, ํ์๋๋๋ผ๋ ํฌ์ด๊ทธ๋ผ์ด๋์ ์๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์จ์ด ์์ต๋๋ค.
- ์ฐ์ ์์: ๋ณดํต ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ ์์คํ ๋ฆฌ์์ค๋ฅผ ๋ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋๋ฉฐ, ํฌ์ด๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์ ๋นํด ์ฐ์ ์์๊ฐ ๋ฎ์ต๋๋ค.
- ์์: ๋ฐ์ด๋ฌ์ค ๊ฒ์ฌ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์์ ์ ํ๊ณ ์๋ ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ ์ ์์ต๋๋ค. ๋, ์์ ์ฌ์ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ์ฑ์ ์ฌ์ฉํ๊ณ ์์ ๋ ์์ ์ ์ฌ์ํ๋ ๊ฒ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋๋ค.
๊ฐ๋จํ ์์ฝํ๋ฉด:
- ํฌ์ด๊ทธ๋ผ์ด๋๋ ์ฌ์ฉ์๊ฐ ์ง๊ธ ๋ณด๊ณ , ์กฐ์ํ๊ณ ์๋ ์์ ์ ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ผ๋ก ์กฐ์ํ์ง ์์ง๋ง ์์คํ ์ด ๋ค์์ ์ฒ๋ฆฌํ๊ณ ์๋ ์์ ์ ๋๋ค.
์ด ๋ ๊ฐ๋ ์ ๋ฉํฐํ์คํน ํ๊ฒฝ์์ ํจ์จ์ ์ธ ์์ ๋ฐฐ๋ถ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๋์ ๋ง:
ChatGPT์ ๋ง:
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์์ ์๋ ๊ฒฝ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ์คํฌ๋ฆฝํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ๋๋ ํฐ๋ฆฌ(Current Working Directory, CWD)๊ฐ ํฌ์ด๊ทธ๋ผ์ด๋์์์ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ํนํ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค:
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
- ์์ ๋๋ ํฐ๋ฆฌ์ ์ฐจ์ด: ํฌ์ด๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ๋ณดํต ์ฌ์ฉ์๊ฐ ์ง์ ๋ช ๋ น์ ์คํํ ๋๋ ํฐ๋ฆฌ์์ ๋์ํฉ๋๋ค. ๋ฐ๋ฉด, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ ๋๋ ์์คํ ์ด๋ ์คํฌ๋ฆฝํธ๊ฐ ์ง์ ํ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ์์ ์คํ๋ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์๋ ๊ฒฝ๋ก๊ฐ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์์ต๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์ ํ๊ฒฝ: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ด ์คํ๋ ๋๋ ํฌ์ด๊ทธ๋ผ์ด๋์์ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์๊ฐ ๊ทธ๋๋ก ์ ์ง๋์ง ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ํน์ ์์ด๋ ์ค์ผ์ค๋ฌ(์: ํฌ๋ก (Cron))์ ์ํด ์คํ๋ ๊ฒฝ์ฐ, ์์ ๋๋ ํฐ๋ฆฌ๊ฐ ์์คํ ์ ํ ๋๋ ํฐ๋ฆฌ๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ๋ก ์ค์ ๋ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ๊ทผ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค:
- ์ ๋ ๊ฒฝ๋ก ์ฌ์ฉ:
- ์๋ ๊ฒฝ๋ก ๋์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ ๋ ๊ฒฝ๋ก๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์ ์ํฅ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ํฌ์ด๊ทธ๋ผ์ด๋์์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
bash์ฝ๋ ๋ณต์ฌ# ์ ๋ ๊ฒฝ๋ก ์์ /home/user/project/data/file.txt - ์์
๋๋ ํฐ๋ฆฌ ์ค์ :
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ๋ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์คํฌ๋ฆฝํธ ์์ ๋ถ๋ถ์์ cd ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
bash์ฝ๋ ๋ณต์ฌ# ์คํฌ๋ฆฝํธ ๋ด์์ ์์ ๋๋ ํฐ๋ฆฌ ์ค์ cd /home/user/project - ์คํฌ๋ฆฝํธ ๋ด๋ถ์์ ๊ฒฝ๋ก ์ค์ :
- ์คํฌ๋ฆฝํธ ๋ด๋ถ์์ ์คํ ํ์ผ์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ค์ ํ์ฌ ์๋ ๊ฒฝ๋ก ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Bash ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค:
bash์ฝ๋ ๋ณต์ฌ# ํ์ฌ ์คํฌ๋ฆฝํธ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก ์ค์ SCRIPT_DIR=$(dirname "$0") cd "$SCRIPT_DIR" -
python์ฝ๋ ๋ณต์ฌimport os import sys # ์คํฌ๋ฆฝํธ์ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ script_dir = os.path.dirname(os.path.abspath(__file__)) os.chdir(script_dir)
์ด๋ ๊ฒ ํ๋ฉด ํฌ์ด๊ทธ๋ผ์ด๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ชจ๋ ๋์ผํ ๊ฒฝ๋ก๋ก ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ๊ฒฝ๋ก ๊ด๋ จ ๋ฌธ์ ๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค.
๋๊ธ