환경변수: login shell, docker, pod

Ryu·2022년 5월 16일
0

2021-archive

목록 보기
7/8

2021년에 작성한 노트를 옮겨 적은 것입니다.

Login shell

  • 사용자가 로그인했을 때 적용되는 쉘이다

  • echo $0의 값의 첫문자가 - 임

  • 내 쉘 확인

    song@song-gb:~/dev/test$ cat /etc/shells
    # /etc/shells: valid login shells
    /bin/sh
    /bin/bash
    /usr/bin/bash
    /bin/rbash
    /usr/bin/rbash
    /bin/dash
    /usr/bin/dash
    /usr/bin/tmux
    
    song@song-gb:~/dev/test$ echo $SHELL
    /bin/bash
  • 로그인 쉘은 다음 순서로 횐경을 설정한다

    1. /etc/profile
      1. /etc/bash.bashrc
      2. /etc/profile.d/*.sh
    2. ~/.bash_profile, ~/.bash_login, ~/.profile
    3. ~/.bashrc
    4. /etc/bashrc
    5. ~/.bash_logout
  • profile들은 bash가 아니더라도 로그인 쉘이면 로드되고

  • bash들은 bash shell로 로그인 되었을 때 적용된다.

Non-login shell

  • 위처럼 ssh로 로그인하지 않고 GUI에서 새 터미널을 열거나 sudo bash, su 등을 실행하여 동작하는 쉘
  • 비로그인 쉘은 다음 순서로 환경을 설정한다
    1. /etc/profile, /etc/bashrc 는 전체 사용자에게
    2. ~/.bashrc, ~/.profile 등은 해당 사용자에게만

Dockerfile

FROM ubuntu18:04
ENV MY_NAME='song'
COPY ./app.py /app.py
ENTRYPOINT ["python", "/app.py"]

App.py

import os
name = os.getenv("MY_NAME", "ryu")
print(name)

Output

$ docker run myimage
song
$ docker run -e "MY_NAME=hui" myimage   
hui

Pod spec

kind: Pod
apiVersion: v1
metadata:
  name: app
spec:
  containers:
    - name: app
      image: bash
      env:
      - name: MY_NAME
        value: ryu

0개의 댓글