리눅스 환경변수 설정

Hong·2022년 4월 15일
1
post-thumbnail

Linux Environmnet Setting

도움된 링크 : link

1. 내가 직면한 문제

  • Python의 subprocess module을 사용해서 FreeSurfer (Linux-based program to preprocess T1-weighted image) 를 실행하려고 함
    • FreeSurfer recon-all은 shell 환경에서 사용해야하고, 이를 위해서 설정해야할 환경변수가 있음
    • 기존의 shell-based script에서 Python-based script로 전환을 하려고 했으나 불가능
  • 그 이유는 subprocess 모듈은 child process를 열어서 커맨드를 수행한 뒤 닫기 때문에, parent process에 원하는 환경변수를 설정할 순 없었던 것
  • 이를 해결하기 위한 여러가지 해결책을 적용해봤으나, 잘 작동하지 않음

리눅스 환경설정 파일들

  • Alias : 별칭

    • 사용자가 명령어를 다른 이름으로 바꿔서 사용할 수 있는 쉘 내부 명령어
    • 쉘 환경에서 쉽게 프로그램을 실행할 수 있게 해줌
  • /etc/profile : 시스템 전역 쉘 변수

    • Login to shell (user) —> first read /etc/profile
      • USER, LOGNAME, HOSTNAME in /etc/profile
      • 이러한 선언되어 있는 시스템 전역 쉘 변수들을 초기화
      • 전역 리드라인 초기화 파일 (etc/inputrc) 읽음 —> 기타 특수 프로그램들의 전역 환경 설정 파일 (/etc/profile.d) 읽음
  • /etc/bashrc : 쉘 함수, Alias 시스템 전역 변수 정의

    • 각종 쉘 함수와 aliase를 위한 전역 변수들을 정의
    • e.g., python (alias)
  • ~/.bash_profile : 유저 개인의 환경 설정

    • 시스템 전역에 적용 X
    • bash shell을 사용하는 유저 개인 (지역변수) 의 path, 시작 프로그램 설정
    • 항목은 /etc/profile 과 동일
  • ~/.bashrc : 유저 개인의 alias 및 변수 설정

    • /etc/bashrc 파일에서 시스템 전역 변수를 읽은 뒤, 이 파일에서 유저의 개인적인 명령어 alias, 환경변수를 설정
  • ~/.bash_logout : 로그아웃 설정파일

source command

  • 수정된 새로운 환경 설정 내용을 적용하기 위해서 source command 사용
  • 수정된 스크립트 파일 (bash, zsh, tcsh 등) 을 적용
    - 참고로, bash = Bourne Again SHell 의 줄임말
  • Not an executable command, shell builtin (link)
  • 즉, shell에서 동작 가능한 커맨드
    • To run a shell script changes the environment and to retain environment in the current shell
      • 즉, 현재 실행되고 있는 쉘 환경 내에서의 환경을 업데이트하기 위한 커맨드!
    • source is not an executable command, it’s a shell builtin.
profile
진우

0개의 댓글