반응형
728x90

'[개발관련] > OS' 카테고리의 다른 글

가상환경 OS에서 SecureRandom 사용시 Tomcat 지연 로딩 문제  (0) 2021.05.18
serverless framework  (0) 2019.12.12
Bash Shell 환경 설정  (0) 2019.04.01
반응형

몇몇의 초기화 파일들을 통해 사용자 shell의 환경을 설정할 수 있다.

참고로 모든 shell 관련 포스트는 bash 기준이다. 로그인 된 shell 종류는 echo $SHELL 명령으로 확인할 수 있다.

/etc/profile 파일

/etc/profile은 사용자가 로그인 할 때, 시스템 전체적으로 공통된 초기화를 하기 위해 설정하는 파일이다. 즉 모든 사용자에게 적용된다.

~/.bash_profile 파일

~/.bash_profile 파일은 사용자별로 적용되는 파일이다. 사용자가 로그인을 하면 사용자 홈 디렉토리(~)에 있는 .bash_profile 파일을 실행한다. 만약 .bash_profile 파일이 없는데 bash_login이라는 파일은 있다면 이를 대신 사용한다. 만약 이 또한 없는데 .profile 파일이 있다면 이를 사용한다. 즉 1) ~/.bash_profile > 2) ~/.bash_login > 3) ~/.profile 순으로 하나만 적용된다.

/etc/bashrc, ~/.bashrc 파일

/etc/profile, ~/bash_profile 파일은 로그인 시 수행되는 반면, /etc/bashrc, ~/.bashrc 파일은 shell 실행시에 수행된다. /etc/bashrc 파일은 시스템 전체에 적용되고, ~/.bashrc 파일은 해당 사용자에게만 적용된다.

~/.bash_logout 파일

해당 사용자가 로그아웃 할 때, 이 파일이 존재한다면 실행된다. 보통 임시 파일 삭제, 히스토리 파일 삭제, 로그아웃 시간 기록 등의 작업을 수행하는데 사용한다.

source 명령어

source 명령어 또는 . 명령어는 쉘 스크립트 파일명을 매개변수로 받는데, 이 파일을 현재 쉘에서 실행시킨다.

$ source ./helloWorld.sh $ . ./helloWorld.sh

source 명령어나 . 명령어를 사용하지 않고 스크립트를 그냥 직접 실행시키면, 자식 쉘이 생성되어 실행되므로 현재 쉘에는 스크립트의 내용이 적용되지 않는다. 따라서 현재 쉘에 대한 환경 설정을 변경하는 스크립트 실행시 이 명령어를 사용한다. .bash_profile 등 초기화 파일을 수정했을 때, 다시 로그인하는 과정을 거치지 않고 현재 쉘에 바로 적용시키기 위해서 주로 사용한다. 또한 이 명령을 사용하는 경우는 스크립트에 실행 권한이 없어도 된다.

# 실행 권한(x)이 없다 $ ls -l ~/.bash_profile -rw-r--r-- 1 www staff 1362 2 19 23:36 /Users/www/.bash_profile # 실행 권한이 없으므로 그냥 실행 시킬 수 없다 $ ~/.bash_profile -bash: /Users/www/.bash_profile: Permission denied # source 명령어나 . 명령어로 실행시 문제 없이 실행된다 $ source ~/.bash_profile $ . ~/.bash_profile

set, shopt 명령어를 이용한 옵션 설정

#### set 명령어

set 명령어의 -o 옵션을 이용하면 셸 환경에 대한 세부적인 사항을 설정할 수 있다. set -o 명령을 실행하면 사용 가능한 모든 옵션의 목록과 설정된 값(on/off)을 출력한다.

$ set -o allexport off # 사용하지 않는 옵션 braceexpand on # 사용하는 옵션 emacs on errexit off errtrace off functrace off ...

set -o 옵션명을 실행하면 해당 옵션의 on/off 여부를 toggle 할 수 있다. 또한 대부분의 옵션에는 축약형이 존재한다. 예를 들어 set -o allexport 명령은 set -a으로 줄여서 쓸 수 있다.

shopt 명령어

shopt 명령어는 set 명령어를 대체하기 위해 2.x 이후 버전부터 적용된 명령이다. (shopt = shell options의 줄임말이다.) set 명령과 유사하나, 더욱 다양한 옵션들을 제공한다.

shopt -p 명령을 실행하면 사용 가능한 모든 옵션의 목록을 볼 수 있다. -u는 현재 사용하지 않는 옵션이고, -s 옵션은 현재 사용하는 옵션임을 의미한다.

$ shopt -p shopt -u cdable_vars shopt -u cdspell shopt -u checkhash shopt -s checkwinsize shopt -s cmdhist shopt -u compat31 ...

set 명령어는 -o 옵션으로 설정 확인, on으로 변경, off로 변경을 모두 처리한다. 반면 shopt는 이들을 각각 다른 옵션으로 실행한다.

  • shopt -p 옵션명 : 해당 옵션의 설정 값을 확인
  • shopt -u 옵션명 : 해당 옵션을 사용하지 않도록 변경
  • shopt -s 옵션명 : 해당 옵션을 사용하도록 변경

# checkhash 옵션의 설정값 확인 $ shopt -p checkhash shopt -u checkhash # 사용하지 않는 옵션 # checkhash 옵션을 사용하도록 변경 $ shopt -s checkhash # checkhash 옵션의 설정값 확인 $ shopt -p checkhash shopt -s checkhash # 사용으로 변경되었다.

PATH 설정

배시 쉘은 커맨드 라인에 입력된 명령의 위치를 찾기 위해 변수 PATH의 값을 참조한다.

$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:.

각 경로들은 콜론(:)으로 구분되어 있으며, 왼쪽에서 오른쪽 방향으로 검색된다. 경로의 맨 마지막 dot.은 현재 작업 디렉토리를 의미한다. 경로의 맨 마지막에 dot(.)을 지정하지 않은 경우에는, 현재 작업 디렉토리에 있는 명령이나 파일을 수행시킬 때 파일명 앞에 ./를 붙여야 한다. 예를 들어 ./helloWorld.sh 처럼 입력해야 한다. ./를 붙이지 않고 파일명 helloWorld.sh만 입력한다면 쉘은 파일을 찾지 못한다.

$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin: # dot 없음 # 현재 디렉토리에 파일이 존재하나, 실행되지 않는다. $ helloWorld.sh -bash: helloWorld.sh: command not found # 앞에 ./를 붙이면 정상적으로 실행된다. $ ./helloWorld.sh Hello, world! # PATH 변수의 값을 변경한다. 현재 값의 맨 뒤에 dot을 붙인다. $ PATH=$PATH:. # PATH를 수정하였으므로 ./를 붙이지 않아도 정상적으로 실행된다. $ helloWorld.sh Hello, world!

 

[참고]https://soy.me/2016/03/05/bash_config/

728x90

'[개발관련] > OS' 카테고리의 다른 글

가상환경 OS에서 SecureRandom 사용시 Tomcat 지연 로딩 문제  (0) 2021.05.18
serverless framework  (0) 2019.12.12
Microsoft Office 365 설치  (0) 2019.04.01
반응형

​오랜만에 노량진 간김에 예전 컵밥 거리가 있던 위치에 가서 점심을 먹게 되었어요. 
무엇을 먹을까 고민하다가 간단하게 보쌈정식을 먹기로 했어요. 
처음 들어갔을 때는 생각보다 비싸다고 생각했는데 반찬도 잘나오고, 고기양도 적당하게 나오더라고요. 
고시촌이라 그런지 학생 손님들이 많더라고요. 

혼자 먹기 적당한 양으로 나왔어요. 
그리고 콩나물 국이 시원하고 맛있더라고요.
그리고 가장 베스트가 새로한 거 같은 김치가 맛있더라고요.

728x90

+ Recent posts