Shell script 계정 확인 - Shell script gyejeong hwag-in

OVERCODE

리눅스

리눅스 사용자 목록 확인 (Linux User List)

오버코드 2017. 9. 23. 14:00

전체 목록 확인

cat /etc/passwd

Shell script 계정 확인 - Shell script gyejeong hwag-in

전체를 다 확인 할 수 있다.

cut -f1 -d: /etc/passwd

아이디만 짤라서 보여준다.

USERADD 를 통해 등록된 계정만 보기

grep /bin/bash /etc/passwd
grep /bin/bash /etc/passwd | cut -f1 -d:

이거 역시 아이디만 짤라서 보여줌

리눅스 환경에서 개발을 하다보면 다양한 쉘(Shell)을 만나게 된다. 가장 많이 사용되는 Bash(Bourne-again shell)부터 zsh, csh, ksh 등 다양한 목적으로 개발된 쉘들이 있다. Bash만 지원하면 좋겠지만 때에 따라서는 여러가지 쉘에서 동작하는 스크립트를 작성해야하는 경우가 있다. 각 쉘마다 지원되는 명령이 약간씩 다르고, 출력 포맷도 다를 때가 있다. 때문에 현재 사용중인 리눅스 쉘을 확인해야할 경우가 있다.

Shell script 계정 확인 - Shell script gyejeong hwag-in
검은색 화면의 터미널

현재 시스템에사 사용가능한 쉘 확인

현재 시스템에서 사용할 수 있는 쉘들의 목록을 보려면 /etc/shells 파일을 확인하면 된다.

Shell script 계정 확인 - Shell script gyejeong hwag-in

지금 사용하고 있는 맥북에서 /etc/shells 파일을 조회해본 결과다. 리눅스는 출력 포맷이 약간 다를 수 있지만 파일의 내용이 의미하는 바는 동일하다.

현재 사용중인 쉘 확인

사용자가 시스템에 로그인을 한 다음 터미널을 열면 로그인 쉘이 구동된다. 로그인 쉘은 사용자마다 다르게 설정할 수 있으며, 쉘에서 또 다른 쉘을 실행시킬 수도 있다. 현재 터미널에서 사용중인 쉘을 확인하는 방법을 알아보자.

우선 echo $0 명령을 통해 확인해 볼 수 있다.

Shell script 계정 확인 - Shell script gyejeong hwag-in

혹은 $SHELL 환경변수를 조회해보면 사용자의 로그인 쉘의 경로까지 확인할 수 있다.

Shell script 계정 확인 - Shell script gyejeong hwag-in

하지만 이 두 가지 방법은 스크립트 안쪽에서 생각대로 동작하지 않을 수 있다.

현재 사용자의 로그인 쉘이 /bin/bash 이고, 다음 쉘 스크립트를 실행한다고 하자. 스크립트의 이름은 test.sh 이다.

Shell script 계정 확인 - Shell script gyejeong hwag-in

이 스크립트를 실행하면 다음 결과를 얻게 된다.

Shell script 계정 확인 - Shell script gyejeong hwag-in

터미널을 연 직후 'echo $0' 명령을 실행해보면 로그인 쉘의 이름이 등장한다. 스크립트 파일에서는 스크립트 파일 이름이 출력된다.

$SHELL 환경 변수의 경우 로그인 쉘 정보가 출력된다. 스크립트의 셔뱅 부분에 명시한 '/bin/zsh' 대신 말이다. 이 유저는 로그인할 때 '/bin/bash'를 사용하도록 설정되어 있다. bash에서 zsh을 이용해 스크립트를 실행하더라도 $SHELL 환경변수는 바뀌지 않아 그대로 bash를 가리키게 된다.

좀 더 고급적인 사용방법은 '$$'를 이용한 방법이다. test.sh 스크립트를 조금 바꿔보자.

Shell script 계정 확인 - Shell script gyejeong hwag-in

프로세스 정보를 가져오는 ps 명령에서 '$$' 는 현재 쉘 스크립트의 PID(Process ID)를 의미한다. 이 PID를 이용해서 ps 명령을 실행시켜보면 현재 쉘 스크립트의 실행정보를 알아낼 수 있다. 이 스크립트를 실행해보면,

Shell script 계정 확인 - Shell script gyejeong hwag-in

이런 정보를 얻을 수 있다. ps의 결과중 CMD 쪽을 확인해보면, /bin/zsh을 구동시키고 ./test.sh을 인자로줘서 실행시켰다는 정보를 알 수 있다. 'ps -p $$' 대신 'ps -cp $$' 를 실행하면,

Shell script 계정 확인 - Shell script gyejeong hwag-in

CMD 부분에 쉘 프로그램의 이름만 나오게 된다. 이 결과를 잘 파싱해서 사용하면 된다.