어떻게 그리고 왜 $ SHLVL 변수를 사용할 것인가?

$ SHLVL 변수는 쉘의 깊이를 알려주는 변수입니다. 이것으로 혼란 스러울 경우 처음부터 시작할 가치가 있습니다.

껍질이란 무엇입니까?

쉘은 명령을 받아서 수행 할 기본 운영 체제에 명령을 제공합니다. 대부분의 Linux 시스템에서 쉘 프로그램은 BASH (The Bourne Again Shell)라고 불리지 만 C 쉘 (tcsh)과 KORN 쉘 (ksh)을 포함한 다른 프로그램도 있습니다.

Linux 셸에 액세스하는 방법

일반적으로 XTerm, konsole 또는 gnome-terminal과 같은 터미널 에뮬레이션 프로그램을 사용하여 쉘 프로그램과 상호 작용합니다.

Openbox 나 GNOME 또는 KDE와 같은 데스크탑 환경과 같은 Windows 관리자를 실행중인 경우 메뉴 또는 대시에서 터미널 에뮬레이터를 찾을 수 있습니다. 많은 시스템에서 단축키 CTRL ALT와 T는 터미널 창도 엽니 다.

또는 명령 행 쉘에 직접 액세스 할 수있는 다른 tty (텔레타이프)로 전환 할 수 있습니다. CTRL ALT와 F1 또는 CTRL ALT와 F2 등을 눌러 이것을 할 수 있습니다.

셸 수준이란 무엇입니까?

쉘에서 명령을 실행하면 쉘 레벨에서 실행됩니다. 셸 내에서 다른 셸을 열면 하위 셸 또는이를 열어 본 셸이됩니다.

따라서 상위 쉘은 아마도 레벨 1 쉘로 간주되고 하위 쉘은 레벨 2 쉘이됩니다.

셸 수준을 표시하는 방법

기사의 제목을 토대로 당신이 어떤 쉘 레벨을 실행하는지 알 수있는 방법은 $ SHLVL 변수를 사용하는 것이 놀랄 일이 아닙니다.

현재 실행중인 쉘 레벨을 보려면 다음을 입력하십시오.

echo $ SHLVL

오히려 흥미롭게도 위의 명령을 터미널 창에서 실행하면 반환 된 결과가 2라는 사실에 놀랄 것입니다.

그러나 tty를 사용하여 동일한 명령을 실행하면 결과는 1입니다.

왜 당신이 물을 수있는 경우입니까? 자, 실행중인 데스크탑 환경이 쉘 위에 돌아가고 있습니다. 그 쉘은 레벨 1이 될 것입니다. 데스크탑 환경 내에서 열려있는 터미널 윈도우는 데스크탑 환경을 연 쉘의 하위 여야하므로 쉘 레벨은 2 이외의 다른 수로 시작할 수 없습니다.

tty는 데스크탑 환경을 실행하지 않으므로 단순히 레벨 1 쉘입니다.

서브 셸을 만드는 방법

쉘과 서브 쉘의 개념을 테스트하는 가장 쉬운 방법은 다음과 같습니다. 터미널 창을 열고 다음을 입력하십시오 :

echo $ SHLVL

터미널 창에서 알 수 있듯이 최소 쉘 레벨은 2입니다.

이제 터미널 창에 다음을 입력하십시오.

sh 명령 자체는 쉘 또는 서브 쉘 내에서 쉘을 사용 중임을 의미하는 대화식 쉘을 실행합니다.

지금 다시 입력하면 :

echo $ SHLVL

쉘 레벨이 3으로 설정되어있는 것을 볼 수 있습니다. 서브 쉘에서 sh 명령을 실행하면 서브 쉘의 서브 쉘이 열리므로 쉘 레벨은 레벨 4가됩니다.

셸 수준이 중요한 이유는 무엇입니까?

쉘 레벨은 스크립트 내의 변수 범위에 대해 생각할 때 중요합니다.

간단한 것을 시작합시다.

개 = 메지에
에코 $ 개

셸에서 위의 명령을 실행하면 maisie라는 단어가 터미널 창에 표시됩니다.

다음을 입력하여 새 셸을 엽니 다.

이 명령을 실행하면 실제로 아무 것도 반환되지 않습니다.

에코 $ 개

그것은 $ dog 변수가 쉘 레벨 2에서만 사용 가능하기 때문입니다. exit를 입력하여 서브 쉘을 종료하고 echo $ dog를 다시 실행하면 maisie라는 단어가 다시 표시됩니다.

또한 쉘 내의 전역 변수의 동작에 대해 생각해 볼 가치가 있습니다.

새 터미널 창에서 시작하여 다음을 입력하십시오.

수출 개 = 메지에
에코 $ 개

예상대로 maisie라는 단어가 표시됩니다. 이제 서브 쉘을 열고 echo $ dog를 다시 입력하십시오. 이번에는 서브 쉘에 있어도 maisie라는 단어가 표시되는 것을 볼 수 있습니다.

그 이유는 export 명령이 $ dog 변수를 전역으로 만들었 기 때문입니다. export 명령을 사용하더라도 하위 쉘에서 $ dog 변수를 변경하면 상위 쉘에는 영향을주지 않습니다.

다행히도 스크립트를 작성할 때 작업하고있는 쉘 레벨을 아는 것이 중요하다는 것을 알 수 있습니다.

필자가 제시 한 예제는 매우 단순하지만 한 쉘 스크립트가 다른 쉘 스크립트를 호출하는 것이 일반적입니다. 다른 쉘 스크립트는 다른 쉘 스크립트를 호출하여 이제는 다른 레벨의 스크립트를 호출합니다. 셸 수준을 아는 것은 매우 중요 할 수 있습니다.