소개
이 랩에서는 Linux 환경에서 현재 사용 중인 셸 (shell) 을 확인하는 방법을 배우게 됩니다. 현재 세션의 셸을 표시하기 위해 echo $SHELL 명령어를 사용하고, 사용자의 기본 로그인 셸을 확인하기 위해 /etc/passwd 파일을 검사하며, 셸 프로세스를 식별하기 위해 ps 명령어를 사용하여 실행 중인 프로세스를 검사하는 등, 활성 셸을 확인하는 다양한 방법을 탐구할 것입니다.
이 단계를 완료함으로써, Linux 에서 효과적인 명령줄 상호 작용 및 스크립팅에 필수적인 셸 환경을 식별하고 이해하는 실질적인 기술을 습득하게 될 것입니다.
echo $SHELL 로 현재 셸 확인
이 단계에서는 터미널에서 현재 사용 중인 셸을 식별하는 방법을 배우게 됩니다. 셸은 명령을 처리하는 명령줄 인터프리터입니다. 셸마다 기능과 구문이 다르지만, 많은 기본 명령어는 셸에 관계없이 동일하게 작동합니다.
LabEx 환경은 기본 셸로 zsh를 사용합니다. $SHELL 환경 변수의 값을 확인하여 이를 확인할 수 있습니다. 환경 변수는 컴퓨터에서 프로세스의 동작에 영향을 미치는 동적 값입니다. $SHELL 변수는 특히 사용자의 기본 셸에 대한 경로를 저장합니다.
$SHELL 변수의 값을 표시하려면, 달러 기호 ($) 가 앞에 붙은 변수 이름 뒤에 echo 명령어를 사용하십시오.
터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.
echo $SHELL
다음과 유사한 출력이 표시되어 현재 셸이 zsh임을 나타냅니다.
/usr/bin/zsh
이는 터미널이 현재 zsh 셸을 실행하고 있음을 확인하며, 이는 LabEx 환경의 기본 구성입니다. Linux 여정을 진행하면서 어떤 셸을 사용하고 있는지 이해하는 것은 중요합니다. 일부 고급 기능 또는 스크립트는 특정 셸에 특화되어 있을 수 있기 때문입니다.
다음 단계로 진행하려면 **계속 (Continue)**을 클릭하십시오.
/etc/passwd 에서 사용자 셸 확인
이전 단계에서는 echo $SHELL을 사용하여 현재 사용 중인 셸을 확인했습니다. 이는 현재 터미널 세션에 대해 시작된 셸입니다. 그러나 시스템은 또한 각 사용자의 기본 로그인 셸에 대한 기록을 구성 파일에 보관합니다.
이 구성 파일은 /etc/passwd입니다. 여기에는 시스템의 모든 사용자에 대한 정보가 포함되어 있습니다. /etc/passwd의 각 줄은 사용자 계정을 나타내며 콜론 (:) 으로 구분된 필드로 나뉩니다. 각 줄의 마지막 필드는 사용자의 기본 로그인 셸을 지정합니다.
/etc/passwd의 내용을 보려면 cat 명령어를 사용할 수 있습니다. labex 사용자에 대한 줄만 관심 있으므로, cat과 grep 명령어를 결합하여 출력을 필터링할 수 있습니다. grep은 파일에서 텍스트 패턴을 검색하는 강력한 도구입니다.
터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.
cat /etc/passwd | grep labex
이 명령을 자세히 살펴보겠습니다.
cat /etc/passwd: 이 명령어는/etc/passwd파일의 내용을 읽어 표준 출력으로 인쇄합니다.|: 이것은 파이프입니다. 왼쪽의 명령어 (cat /etc/passwd) 의 출력을 가져와 오른쪽의 명령어 (grep labex) 에 입력으로 보냅니다.grep labex: 이 명령어는 입력으로 받은 내용에서 "labex" 문자열을 포함하는 줄을 검색하여 해당 줄을 인쇄합니다.
다음과 유사한 단일 출력 줄을 볼 수 있습니다.
labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh
이 줄에는 콜론으로 구분된 labex 사용자에 대한 여러 정보가 포함되어 있습니다. 필드는 (순서대로) 다음과 같습니다.
- 사용자 이름 (
labex) - 비밀번호 (
x로 표시되며, 실제 비밀번호 해시는 보안을 위해 다른 곳에 저장됨) - 사용자 ID (UID) (
5000) - 그룹 ID (GID) (
5000) - 사용자 정보 (GECOS 필드) (
LabEx user,,,) - 홈 디렉토리 (
/home/labex) - 기본 로그인 셸 (
/usr/bin/zsh)
마지막 필드인 /usr/bin/zsh는 labex 사용자의 기본 로그인 셸이 실제로 zsh임을 확인하며, 이는 echo $SHELL에서 확인한 내용과 일치합니다.
계속 진행하려면 **계속 (Continue)**을 클릭하십시오.
ps 명령어로 셸 프로세스 검사
이전 단계에서는 echo $SHELL을 사용하여 현재 셸을 식별하고 /etc/passwd에서 기본 로그인 셸을 확인했습니다. 이제 시스템에서 실행 중인 프로세스를 살펴보고 셸 프로세스 자체를 확인해 보겠습니다.
Linux 에서 실행 중인 모든 프로그램은 프로세스입니다. ps 명령어 ( "process status"의 약자) 는 현재 실행 중인 프로세스에 대한 정보를 보기 위해 사용됩니다.
현재 터미널 세션과 관련된 프로세스를 보려면 -f 옵션과 함께 ps 명령어를 사용하여 전체 형식 목록을 제공할 수 있습니다.
터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.
ps -f
다음과 유사한 출력을 볼 수 있습니다.
UID PID PPID C STIME TTY TIME CMD
labex XXXX XXXX 0 HH:MM pts/0 00:00:00 zsh
labex YYYY XXXX 0 HH:MM pts/0 00:00:00 ps -f
열을 살펴보겠습니다.
UID: 프로세스 소유자의 사용자 ID (labex).PID: 프로세스 ID(Process ID), 각 프로세스에 대한 고유 번호.PPID: 상위 프로세스 ID(Parent Process ID). 이것은 이 프로세스를 시작한 프로세스의 PID 입니다.C: CPU 사용률.STIME: 프로세스가 시작된 시간.TTY: 프로세스와 관련된 터미널 (pts/0은 사용 중인 것과 같은 가상 터미널을 나타냅니다).TIME: 프로세스에서 사용한 누적 CPU 시간.CMD: 프로세스를 시작한 명령어.
출력에서 CMD가 zsh인 줄을 볼 수 있습니다. 이 줄은 현재 터미널 세션을 실행하는 zsh 셸 프로세스를 나타냅니다. 또한 ps -f 명령어 자체에 대한 줄도 표시됩니다. 이는 명령어를 실행할 때 실행 중인 프로세스이기 때문입니다.
이 단계에서는 ps를 사용하여 실행 중인 프로세스를 검사하고 셸이 실제로 시스템에서 프로세스로 실행되고 있는지 확인하는 방법을 보여줍니다.
이 랩을 완료하려면 **계속 (Continue)**을 클릭하십시오.
요약
이 랩에서는 Linux 에서 현재 사용 중인 셸을 확인하는 방법을 배웠습니다. 먼저 echo $SHELL 명령어를 사용하여 현재 터미널 세션에서 실행 중인 셸의 경로를 표시했습니다. 이를 통해 LabEx 환경이 기본적으로 zsh임을 알 수 있었습니다.
그런 다음, 기본 로그인 셸을 포함하여 시스템 사용자에 대한 정보를 저장하는 /etc/passwd 파일을 탐색했습니다. 이 파일에서 사용자의 항목의 마지막 필드를 검사하여 로그인 시 계정에 할당된 셸을 확인할 수 있습니다. 이러한 방법은 현재 세션에 사용 중인 셸인지 또는 사용자의 기본 셸인지 여부에 관계없이 사용 중인 셸을 결정하는 다양한 방법을 제공합니다.



