JiYoung Dev πŸ–₯

ν™˜κ²½λ³€μˆ˜(PATH) μ΄ν•΄ν•˜κΈ° λ³Έλ¬Έ

Study/Back-End

ν™˜κ²½λ³€μˆ˜(PATH) μ΄ν•΄ν•˜κΈ°

Shinjio 2024. 11. 20. 21:45
λ°˜μ‘ν˜•

Docker둜 λ¦¬μ•‘νŠΈ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ‹€κ°€ μ‹€ν–‰ν•˜λŠ” κ³Όμ •μ—μ„œ λ²ˆκ±°λ‘œμ›€μ΄ μžˆμ–΄μ„œ 개발 μ„œλ²„μ—μ„œ nodeλ₯Ό μ„€μΉ˜ν•˜μ—¬ μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆλ‹€. 터미널 접속 ν›„ export둜 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•œ λ’€ λ…Έλ“œλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•ŒλŠ” 싀행이 μ •μƒμ μœΌλ‘œ λ˜μ—ˆλŠ”λ°, λ‘œκ·Έμ•„μ›ƒ ν›„ λ‹€μ‹œ 터미널에 μ ‘μ†ν•˜λ‹ˆ ν™˜κ²½λ³€μˆ˜ 섀정이 ν’€λ € λ…Έλ“œκ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ§€ μ•Šμ•˜λ‹€. 이번 기회λ₯Ό ν†΅ν•΄μ„œ λ¦¬λˆ…μŠ€ ν™˜κ²½λ³€μˆ˜ 섀정에 λŒ€ν•΄ μ’€ 더 μžμ„Ένžˆ κ³΅λΆ€ν•˜κ²Œ λ˜μ—ˆκ³ , μ•„λž˜ λ‚΄μš©μ„ 정리해 λ³΄μ•˜λ‹€.


ν™˜κ²½λ³€μˆ˜

ν™˜κ²½λ³€μˆ˜(PATH)λž€, ν”„λ‘œκ·Έλž¨μ„ μ°ΎλŠ” κΈ°λ³Έ 경둜λ₯Ό λ§ν•œλ‹€.

 

λ§Œμ•½ μœˆλ„μš°μΈ λ‚΄ μ»΄ν“¨ν„°μ—μ„œ μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ €κ³  java -jar와 같은 λͺ…λ Ήμ–΄λ₯Ό μœˆλ„μš° CMD 창에 μž…λ ₯ν•œλ‹€. ν•˜μ§€λ§Œ ν™˜κ²½ λ³€μˆ˜ μ„€μ • 없이 java ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ €κ³  ν•˜λ©΄ ‘java’은(λŠ”) λ‚΄λΆ€ λ˜λŠ” μ™ΈλΆ€ λͺ…λ Ή, μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨, λ˜λŠ” 배치 파일이 μ•„λ‹™λ‹ˆλ‹€. 라고 좜λ ₯될 것이닀. μ™œλƒν•˜λ©΄ java의 경둜λ₯Ό μœˆλ„μš°λŠ” 찾지 λͺ»ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 이 λ•Œ ν•„μš”ν•œ 것이 PATH ν™˜κ²½λ³€μˆ˜ 섀정이닀.

 

ν™˜κ²½λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ§€ μ•Šκ³  java λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” C:\java\java-11-openjdk-11.0.8.10-1.windows.ojdkbuild.x86_64\bin κ³Ό 같은 λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•΄μ„œ ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ΄ μ‘΄μž¬ν•˜λŠ” κ²½λ‘œμ—μ„œ 싀행을 ν•΄μ•Ό 정상적인 싀행이 κ°€λŠ₯ν•˜λ‹€. java μ‹€ν–‰ 파일이 ν•΄λ‹Ή 디렉토리에 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

κ·ΈλŸ¬λ‚˜ java ν™˜κ²½λ³€μˆ˜λ₯Ό C:\java\java-11-openjdk-11.0.8.10-1.windows.ojdkbuild.x86_64\bin κ°™μ€ 경둜둜 μ„€μ •ν•΄ μ£Όλ©΄ javaλΌλŠ” λͺ…λ Ήμ–΄λ₯Ό μ „μ—­μ μœΌλ‘œ μ‚¬μš©ν•  수 있게 λœλ‹€.

ν™˜κ²½λ³€μˆ˜μ—λŠ” μ‹œμŠ€ν…œ 전체 ν™˜κ²½λ³€μˆ˜μ™€ μ‚¬μš©μž ν™˜κ²½λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λŠ”λ° 각각에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.


μ‹œμŠ€ν…œ 전체 ν™˜κ²½λ³€μˆ˜

μ‹œμŠ€ν…œ 전체에 μ μš©λ˜λŠ” ν™˜κ²½ λ³€μˆ˜λ“€μ€ μ‹œμŠ€ν…œμ˜ λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ 영ν–₯을 λ―ΈμΉ˜λŠ” ν™˜κ²½λ³€μˆ˜λ‘œ 보톡 /etc/ 디렉토리 λ‚΄μ˜ μ„€μ • νŒŒμΌμ— μ •μ˜λœλ‹€.

 

/etc/profile

  • λͺ©μ : μ‹œμŠ€ν…œμ—μ„œ λͺ¨λ“  둜그인 셸에 λŒ€ν•΄ μ μš©λ˜λŠ” ν™˜κ²½ λ³€μˆ˜ 및 μ΄ˆκΈ°ν™” 슀크립트λ₯Ό μ„€μ •
  • μ„€λͺ…: 둜그인 셸이 μ‹œμž‘λ  λ•Œ μ‹€ν–‰λ˜λŠ” μŠ€ν¬λ¦½νŠΈμ΄λ‹€. 이 νŒŒμΌμ€ μ‹œμŠ€ν…œμ— λ‘œκ·ΈμΈν•  λ•Œ ν•œ 번만 μ‹€ν–‰λ˜λ©°, μ‹œμŠ€ν…œμ˜ λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ 곡톡적인 ν™˜κ²½ 섀정을 μ œκ³΅ν•œλ‹€.
  • μ‚¬μš© 예: μ‹œμŠ€ν…œ-wide ν™˜κ²½ λ³€μˆ˜ μ„€μ •, 경둜(PATH) μ„€μ •, κΈ°λ³Έ μ…Έ μ˜΅μ…˜ μ„€μ • λ“±.
    # μ‹œμŠ€ν…œ-wide μ„€μ •
    export PATH=$PATH:/usr/local/bin
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    
  • μ˜ˆμ‹œ: /etc/profile

 

/etc/profile.d/.sh λ˜λŠ” .csh

  • λͺ©μ : /etc/profile νŒŒμΌμ—μ„œ λ‹€μ–‘ν•œ 좔가적인 ν™˜κ²½ λ³€μˆ˜ μ„€μ • 슀크립트λ₯Ό ν¬ν•¨ν•˜λŠ” 디렉토리
  • μ„€λͺ…: /etc/profile.d/ 디렉토리 λ‚΄μ˜ 각 .sh λ˜λŠ” .csh νŒŒμΌμ€ μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•  λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λœλ‹€. 이 νŒŒμΌλ“€μ€ μ‹œμŠ€ν…œ-wide ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λŠ” 데 μœ μš©ν•˜λ©°, 각각의 μ†Œν”„νŠΈμ›¨μ–΄ νŒ¨ν‚€μ§€λ‚˜ νŠΉμ • 섀정을 λ³„λ„μ˜ 파일둜 관리할 수 μžˆλ„λ‘ ν•œλ‹€.
  • μ‚¬μš© 예: 각 νŒ¨ν‚€μ§€μ˜ ν™˜κ²½ 섀정을 λ³„λ„μ˜ 파일둜 κ΄€λ¦¬ν•˜κ±°λ‚˜, νŠΉμ • 셸에 λ§žλŠ” 섀정을 λ”°λ‘œ μ„€μ •ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
    # /etc/profile.d/java.sh
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    export PATH=$PATH:$JAVA_HOME/bi
    
  • μ˜ˆμ‹œ: /etc/profile.d/ μ•ˆμ— μžˆλŠ” java.sh

 

/etc/bashrc (λ˜λŠ” /etc/bash.bashrc)

  • λͺ©μ : λΉ„λ‘œκ·ΈμΈ 셸에 λŒ€ν•œ ν™˜κ²½ μ„€μ • λ‹΄λ‹Ή
  • μ„€λͺ…: 둜그인 셸이 μ•„λ‹Œ λͺ¨λ“  μΈν„°λž™ν‹°λΈŒ μ…Έμ—μ„œ μ‹€ν–‰λ˜λŠ” 슀크립트. 터미널을 μƒˆλ‘œ μ—΄ λ•Œλ§ˆλ‹€ μ‹€ν–‰λ˜λ©°, μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•  **alias*λ‚˜ ν”„λ‘¬ν”„νŠΈ μ„€μ •, μ…Έ μ˜΅μ…˜ 등을 μ„€μ •ν•˜λŠ” 데 μ‚¬μš©.
  • μ‚¬μš© 예: ν”„λ‘¬ν”„νŠΈ μ„€μ •, alias μ •μ˜, νžˆμŠ€ν† λ¦¬ μ„€μ • λ“±.
  • μ˜ˆμ‹œ: /etc/bashrc
    # /etc/bashrc
    alias ll='ls -l'
    export HISTSIZE=1000
    


μ‚¬μš©μž ν™˜κ²½λ³€μˆ˜

각 μ‚¬μš©μžμ—κ²Œλ§Œ μ μš©λ˜λŠ” ν™˜κ²½ λ³€μˆ˜λŠ” μ‚¬μš©μžλ³„ ν™ˆ 디렉토리에 μžˆλŠ” νŒŒμΌλ“€μ— μ„€μ •λœλ‹€. μ΄λŸ¬ν•œ νŒŒμΌλ“€μ€ μ‹œμŠ€ν…œ-wide 섀정에 영ν–₯을 받지 μ•Šκ³  κ°œλ³„ μ‚¬μš©μžμ˜ ν™˜κ²½μ—λ§Œ μ μš©λœλ‹€.

 

~/.bash_profile

  • λͺ©μ : 둜그인 셸을 μœ„ν•œ ν™˜κ²½ λ³€μˆ˜ 및 μ΄ˆκΈ°ν™” μ„€μ • 파일
  • μ„€λͺ…: μ‚¬μš©μžκ°€ 둜그인 셸을 μ‹€ν–‰ν•  λ•Œ ν•œ 번만 μ½νžˆλŠ” μ„€μ • 파일. 이 νŒŒμΌμ—μ„œλŠ” 둜그인 μ‹œμ—λ§Œ 적용될 ν™˜κ²½ λ³€μˆ˜, 경둜 μ„€μ • 등을 μ •μ˜.
  • μ‚¬μš© 예: ν™˜κ²½ λ³€μˆ˜ μ„€μ •, μ…Έ μ΄ˆκΈ°ν™” 슀크립트 μ„€μ • λ“±.
    # ~/.bash_profile
    export PATH=$PATH:/usr/local/bin
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    
  • μ˜ˆμ‹œ: ~/.bash_profile

 

~/.bashrc

  • λͺ©μ : λΉ„λ‘œκ·ΈμΈ 셸을 μœ„ν•œ ν™˜κ²½ λ³€μˆ˜ 및 μ΄ˆκΈ°ν™” μ„€μ • 파일
  • μ„€λͺ…: λΉ„λ‘œκ·ΈμΈ μ…Έ, 즉 μƒˆλ‘œμš΄ 터미널을 μ—΄κ±°λ‚˜ 셸을 μ‹œμž‘ν•  λ•Œλ§ˆλ‹€ μ‹€ν–‰. 이 νŒŒμΌμ€ μΈν„°λž™ν‹°λΈŒ μ…Έμ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ, ν”„λ‘¬ν”„νŠΈ μ„€μ •, alias, μ…Έ μ˜΅μ…˜ 등을 μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.
  • μ‚¬μš© 예: alias μ„€μ •, νžˆμŠ€ν† λ¦¬ μ„€μ •, 기타 μ…Έ λ™μž‘ μ„€μ • λ“±.
    # ~/.bashrc
    alias ll='ls -l'
    export HISTSIZE=1000
    
  • μ˜ˆμ‹œ: ~/.bashrc

 

~/.profile

  • λͺ©μ : 둜그인 μ…Έμ—μ„œ μ‹€ν–‰λ˜λŠ” ν™˜κ²½ λ³€μˆ˜ 및 μ„€μ • 파일. ~/.bash_profileκ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ, bash뿐만 μ•„λ‹ˆλΌ λ‹€λ₯Έ 셸에도 μ‚¬μš©λ  수 μžˆλ‹€.
  • μ„€λͺ…: ~/.bash_profile을 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†κ±°λ‚˜, bash μ™Έμ˜ 셸을 μ‚¬μš©ν•˜λŠ” 경우 이 파일이 둜그인 μ…Έ 섀정을 λ‹΄λ‹Ήν•œλ‹€.
  • μ‚¬μš© 예: ν™˜κ²½ λ³€μˆ˜ μ„€μ •, 둜그인 μ‹œ μžλ™ μ‹€ν–‰ν•  ν”„λ‘œκ·Έλž¨ μ„€μ • λ“±.
    # ~/.profile
    export PATH=$PATH:/usr/local/bin
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
    
  • μ˜ˆμ‹œ: ~/.profile

env λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•œ ν™˜κ²½ λ³€μˆ˜ μ„€μ •

  • λͺ©μ : ν™˜κ²½ λ³€μˆ˜λ₯Ό μΌμ‹œμ μœΌλ‘œ μ„€μ •ν•˜κ±°λ‚˜ μ‹œμŠ€ν…œμ˜ ν˜„μž¬ ν™˜κ²½ λ³€μˆ˜λ₯Ό 확인할 λ•Œ μ‚¬μš©λœλ‹€.
  • μ„€λͺ…: env λͺ…λ Ήμ–΄λŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜κ±°λ‚˜ ν˜„μž¬ μ…Έμ—μ„œ 적용된 λͺ¨λ“  ν™˜κ²½ λ³€μˆ˜λ“€μ„ 확인할 수 μžˆλŠ” λͺ…령어이닀.
    • env둜 ν™˜κ²½ λ³€μˆ˜λ₯Ό μž„μ‹œλ‘œ μ„€μ •ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ 셸을 μ‹€ν–‰ν•  수 μžˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, νŠΉμ • ν™˜κ²½ λ³€μˆ˜λ₯Ό μž„μ‹œλ‘œ μ„€μ •ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 ν•  수 μžˆλ‹€.
    • env JAVA_HOME=/usr/lib/jvm/java-11-openjdk node app.js
    이 λͺ…령은 JAVA_HOME ν™˜κ²½ λ³€μˆ˜λ₯Ό μΌμ‹œμ μœΌλ‘œ μ„€μ •ν•œ ν›„ node app.jsλ₯Ό μ‹€ν–‰ν•œλ‹€.

정리

/etc/profile μ‹œμŠ€ν…œ-wide 둜그인 μ…Έ μ„€μ • 파일. λͺ¨λ“  둜그인 셸에 적용
/etc/profile.d/*.sh /etc/profile에 ν¬ν•¨λœ 좔가적인 ν™˜κ²½ λ³€μˆ˜ μ„€μ • 파일. 각 μ†Œν”„νŠΈμ›¨μ–΄ νŒ¨ν‚€μ§€ μ„€μ • λ“±.
/etc/bashrc μ‹œμŠ€ν…œ-wide λΉ„λ‘œκ·ΈμΈ μ…Έ μ„€μ • 파일. 터미널을 μƒˆλ‘œ μ—΄ λ•Œλ§ˆλ‹€ μ‹€ν–‰
~/.bash_profile μ‚¬μš©μž 둜그인 μ…Έ μ„€μ • 파일. 둜그인 μ‹œ ν•œ 번만 μ‹€ν–‰
~/.bashrc μ‚¬μš©μž λΉ„λ‘œκ·ΈμΈ μ…Έ μ„€μ • 파일. μƒˆ 터미널 창을 μ—΄ λ•Œλ§ˆλ‹€ μ‹€ν–‰
~/.profile μ‚¬μš©μž 둜그인 μ…Έ μ„€μ • 파일. ~/.bash_profile λŒ€μ‹  μ‚¬μš©ν•  수 있음
env λͺ…λ Ήμ–΄ ν™˜κ²½ λ³€μˆ˜ μ„€μ • 및 확인, μΌμ‹œμ μœΌλ‘œ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•  λ•Œ μ‚¬μš©

 

κ²°λ‘ : μ‹œμŠ€ν…œ-wide ν™˜κ²½ λ³€μˆ˜λŠ” /etc/에 μ„€μ •λ˜κ³ , μ‚¬μš©μžλ³„ ν™˜κ²½ λ³€μˆ˜λŠ” ~/.bash_profile, ~/.bashrc, ~/.profile에 μ„€μ •λœλ‹€. 각 파일의 μ—­ν• κ³Ό μ‚¬μš© μ‹œμ μ„ μ΄ν•΄ν•˜λ©΄, ν™˜κ²½ λ³€μˆ˜ 섀정을 더 잘 관리할 수 μžˆλ‹€.


참고자료

https://gliver.tistory.com/43

https://bommbom.tistory.com/entry/λ¦¬λˆ…μŠ€Linux-ν™˜κ²½λ³€μˆ˜-μ„€μ •profile-bashrc

λ°˜μ‘ν˜•