ಹೇಗೆ ಮತ್ತು ಏಕೆ ನೀವು $ SHLVL ವೇರಿಯಬಲ್ ಬಳಸುತ್ತೀರಾ

$ SHLVL ವೇರಿಯೇಬಲ್ ಎಷ್ಟು ಶೆಲ್ಗಳನ್ನು ನೀವು ಆಳವಾಗಿ ಹೇಳುವುದನ್ನು ಹೇಳಲು ಬಳಸಲಾಗುತ್ತದೆ. ನೀವು ಈ ಮೂಲಕ ಗೊಂದಲಕ್ಕೊಳಗಾಗಿದ್ದರೆ ಅದು ಆರಂಭದಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುವ ಯೋಗ್ಯವಾಗಿದೆ.

ಒಂದು ಶೆಲ್ ಎಂದರೇನು?

ಶೆಲ್ ಆಜ್ಞೆಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ನಿರ್ವಹಿಸಲು ಆಂತರಿಕ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗೆ ಅವುಗಳನ್ನು ನೀಡುತ್ತದೆ. ಹೆಚ್ಚಿನ ಲಿನಕ್ಸ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಶೆಲ್ ಪ್ರೊಗ್ರಾಮ್ ಅನ್ನು ಬಾಶ್ (ಬೌರ್ನ್ ಎಗೈನ್ ಶೆಲ್) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಆದರೆ ಸಿ ಶೆಲ್ (ಟಿಸಿಎಚ್) ಮತ್ತು ಕೆಆರ್ಎನ್ ಶೆಲ್ (ಕೆಎಸ್ಎಸ್) ಸೇರಿದಂತೆ ಇತರರು ಲಭ್ಯವಿದೆ.

ಲಿನಕ್ಸ್ ಶೆಲ್ ಅನ್ನು ಹೇಗೆ ಪ್ರವೇಶಿಸುವುದು

XTerm, konsole ಅಥವಾ gnome-terminal ಮುಂತಾದ ಟರ್ಮಿನಲ್ ಎಮ್ಯುಲೇಷನ್ ಪ್ರೋಗ್ರಾಂನ ಬಳಕೆಯ ಮೂಲಕ ನೀವು ಶೆಲ್ ಪ್ರೋಗ್ರಾಂಗೆ ಸಂವಹನ ನಡೆಸುವ ಬಳಕೆದಾರರಾಗಿ.

ನೀವು ಓಪನ್ಬಾಕ್ಸ್ ಅಥವಾ ಗ್ನೋಮ್ ಅಥವಾ ಕೆಡಿಇನಂತಹ ಡೆಸ್ಕ್ಟಾಪ್ ಪರಿಸರದಂತೆ ವಿಂಡೋಸ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಓಡುತ್ತಿದ್ದರೆ ನೀವು ಒಂದು ಟರ್ಮಿನಲ್ ಎಮ್ಯುಲೇಟರ್ ಅನ್ನು ಮೆನು ಅಥವಾ ಡ್ಯಾಶ್ನಿಂದ ಪಡೆಯುತ್ತೀರಿ. ಅನೇಕ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಶಾರ್ಟ್ಕಟ್ CTRL ALT ಮತ್ತು T ಒಂದು ಟರ್ಮಿನಲ್ ವಿಂಡೋವನ್ನು ತೆರೆಯುತ್ತದೆ.

ಪರ್ಯಾಯವಾಗಿ ನೀವು ಮತ್ತೊಂದು tty ಗೆ ಬದಲಿಸಬಹುದು (ಟೆಲಿಟೈಪ್ಪ್ರಿಟರ್) ಇದು ಕಮಾಂಡ್ ಲೈನ್ ಶೆಲ್ಗೆ ನೇರವಾಗಿ ಪ್ರವೇಶವನ್ನು ನೀಡುತ್ತದೆ. CTRL ALT ಮತ್ತು F1 ಅಥವಾ CTRL ALT ಮತ್ತು F2 ಇತ್ಯಾದಿಗಳನ್ನು ಒತ್ತುವ ಮೂಲಕ ನೀವು ಇದನ್ನು ಮಾಡಬಹುದು.

ಶೆಲ್ ಮಟ್ಟ ಎಂದರೇನು?

ಶೆಲ್ನಲ್ಲಿ ನೀವು ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿದಾಗ ಅದು ಶೆಲ್ ಮಟ್ಟ ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ. ಶೆಲ್ನೊಳಗೆ ನೀವು ಮತ್ತೊಂದು ಶೆಲ್ ಅನ್ನು ತೆರೆಯಬಹುದು, ಅದು ಅದನ್ನು ಸಬ್ಹೆಲ್ಲ್ ಅಥವಾ ಶೆಲ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ.

ಆದ್ದರಿಂದ ಪೋಷಕ ಶೆಲ್ ಬಹುಶಃ ಮಟ್ಟ 1 ಶೆಲ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಮಗುವಿನ ಶೆಲ್ ಒಂದು ಮಟ್ಟದ 2 ಶೆಲ್ ಆಗಿರುತ್ತದೆ.

ಶೆಲ್ ಮಟ್ಟವನ್ನು ಹೇಗೆ ಪ್ರದರ್ಶಿಸಬೇಕು

$ SHLVL ವೇರಿಯೇಬಲ್ ಅನ್ನು ಬಳಸುವುದರ ಮೂಲಕ ನೀವು ಯಾವ ಶೆಲ್ ಲೆವೆಲ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತಿರುವಿರಿ ಎಂಬುದನ್ನು ನೀವು ಹೇಳುವ ವಿಧಾನವು ಲೇಖನದ ಶೀರ್ಷಿಕೆಯ ಆಧಾರದ ಮೇಲೆ ಅಚ್ಚರಿಯೇನಲ್ಲ.

ನೀವು ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿರುವ ಶೆಲ್ ಮಟ್ಟವನ್ನು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡಲು:

$ SHLVL ಪ್ರತಿಧ್ವನಿ

ಬದಲಿಗೆ ಟರ್ಮಿನಲ್ ವಿಂಡೊದಲ್ಲಿ ನೀವು ಮೇಲಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿದರೆ ಕುತೂಹಲಕಾರಿಯಾಗಿ ಫಲಿತಾಂಶವು ಮರಳಿದೆ ಎಂದು ನೀವು ಆಶ್ಚರ್ಯವಾಗಬಹುದು 2.

ಆದಾಗ್ಯೂ ನೀವು ಅದೇ ಆದೇಶವನ್ನು tty ಬಳಸಿ ಬಳಸುತ್ತಿದ್ದರೆ ಆಗ ಫಲಿತಾಂಶವು 1 ಆಗಿದೆ.

ನೀವು ಕೇಳಬಹುದು ಏಕೆ? ನೀವು ಚಾಲನೆಯಲ್ಲಿರುವ ಡೆಸ್ಕ್ಟಾಪ್ ಪರಿಸರವು ಶೆಲ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ರನ್ ಆಗುತ್ತಿದೆ. ಆ ಶೆಲ್ ಹಂತ 1 ಆಗಿರುತ್ತದೆ. ಡೆಸ್ಕ್ಟಾಪ್ ಪರಿಸರದೊಳಗಿಂದ ನೀವು ತೆರೆದುಕೊಳ್ಳುವ ಯಾವುದೇ ಟರ್ಮಿನಲ್ ವಿಂಡೋವು ಡೆಸ್ಕ್ಟಾಪ್ ಪರಿಸರವನ್ನು ತೆರೆದಿರುವ ಶೆಲ್ನ ಮಗುವಾಗಲೇ ಬೇಕು ಮತ್ತು ಆದ್ದರಿಂದ ಶೆಲ್ ಲೆವೆಲ್ 2 ಗಿಂತ ಯಾವುದೇ ಸಂಖ್ಯೆಯಲ್ಲಿ ಪ್ರಾರಂಭಿಸಬಾರದು.

Tty ಒಂದು ಡೆಸ್ಕ್ಟಾಪ್ ಪರಿಸರವನ್ನು ಚಾಲನೆ ಮಾಡುವುದಿಲ್ಲ ಮತ್ತು ಆದ್ದರಿಂದ ಕೇವಲ ಒಂದು ಮಟ್ಟದ 1 ಶೆಲ್ ಆಗಿದೆ.

Subshells ಅನ್ನು ಹೇಗೆ ರಚಿಸುವುದು

ಚಿಪ್ಪುಗಳು ಮತ್ತು ಉಪಜಾತಿಗಳ ಪರಿಕಲ್ಪನೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು ಸುಲಭ ಮಾರ್ಗವೆಂದರೆ ಈ ರೀತಿಯಾಗಿದೆ. ಟರ್ಮಿನಲ್ ವಿಂಡೊವನ್ನು ತೆರೆಯಿರಿ ಮತ್ತು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ:

$ SHLVL ಪ್ರತಿಧ್ವನಿ

ಟರ್ಮಿನಲ್ ವಿಂಡೊದಿಂದ ನಾವು ತಿಳಿದಿರುವಂತೆ ಕನಿಷ್ಠ ಶೆಲ್ ಲೆವೆಲ್ 2 ಆಗಿದೆ.

ಈಗ ಟರ್ಮಿನಲ್ ವಿಂಡೋದಲ್ಲಿ ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ:

sh

ತನ್ನದೇ ಆದ sh ಆಜ್ಞೆಯು ಸಂವಾದಾತ್ಮಕ ಶೆಲ್ ಅನ್ನು ನಡೆಸುತ್ತದೆ, ಇದರರ್ಥ ನೀವು ಶೆಲ್ ಅಥವಾ ಶೆಲ್ಲಿಲ್ನಲ್ಲಿ ಶೆಲ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ.

ನೀವು ಇದನ್ನು ಮತ್ತೆ ಟೈಪ್ ಮಾಡಿದರೆ:

$ SHLVL ಪ್ರತಿಧ್ವನಿ

ಶೆಲ್ ಲೆವೆಲ್ ಅನ್ನು 3 ಕ್ಕೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ನೋಡುತ್ತೀರಿ. ಸಬ್ಹೆಲ್ಲ್ನಿಂದ sh ಆಜ್ಞೆಯನ್ನು ರನ್ನಿಂಗ್ ಮಾಡುವುದು ಸಬ್ಹೆಲ್ಲ್ನ ಒಂದು ಸಬ್ಹೆಲ್ಲ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಶೆಲ್ ಲೆವೆಲ್ ಮಟ್ಟ 4 ರಷ್ಟಿರುತ್ತದೆ.

ಶೆಲ್ ಮಟ್ಟ ಏಕೆ ಮುಖ್ಯ?

ನಿಮ್ಮ ಲಿಪಿಯೊಳಗಿನ ಅಸ್ಥಿರ ವ್ಯಾಪ್ತಿಯ ಬಗ್ಗೆ ಯೋಚಿಸುವಾಗ ಶೆಲ್ ಮಟ್ಟವು ಮುಖ್ಯವಾಗಿದೆ.

ಯಾವುದನ್ನಾದರೂ ಸರಳವಾಗಿ ಆರಂಭಿಸೋಣ:

ನಾಯಿ = ಮೇಸಿ
$ ನಾಯಿ ಪ್ರತಿಧ್ವನಿ

ನೀವು ಮೇಲಿನ ಆಜ್ಞೆಯನ್ನು ಶೆಲ್ನಲ್ಲಿ ಓಡಿಸಿದರೆ ಟರ್ಮಿನಲ್ ವಿಂಡೋಗೆ maisie ಎಂಬ ಪದವನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ.

ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡುವ ಮೂಲಕ ಹೊಸ ಶೆಲ್ ತೆರೆಯಿರಿ:

sh

ನೀವು ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿದರೆ ಏನೂ ನಿಜವಾಗಿ ಮರಳಿಲ್ಲ ಎಂದು ನೀವು ನೋಡುತ್ತೀರಿ:

$ ನಾಯಿ ಪ್ರತಿಧ್ವನಿ

ಅಂದರೆ $ ಡಾಗ್ ವೇರಿಯೇಬಲ್ ಶೆಲ್ ಮಟ್ಟದಲ್ಲಿ ಮಾತ್ರ ಲಭ್ಯವಿರುತ್ತದೆ. ನೀವು ಸಬ್ಹೆಲ್ಲ್ನಿಂದ ನಿರ್ಗಮಿಸಲು ನಿರ್ಗಮನವನ್ನು ಟೈಪ್ ಮಾಡಿದರೆ ಮತ್ತು echo $ dog ಅನ್ನು ಮತ್ತೆ ಓಡಿಸಿದರೆ ಮತ್ತೆ ಪದವನ್ನು ಮತ್ತೆ ಪ್ರದರ್ಶಿಸಲಾಗುವುದು.

ಶೆಲ್ನೊಳಗಿನ ಜಾಗತಿಕ ಅಸ್ಥಿರ ವರ್ತನೆಯ ಬಗ್ಗೆ ಇದು ಮೌಲ್ಯಯುತವಾಗಿದೆ.

ಹೊಸ ಟರ್ಮಿನಲ್ ವಿಂಡೋದಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ:

ರಫ್ತು ನಾಯಿ = ಮಿಸ್ಸಿ
$ ನಾಯಿ ಪ್ರತಿಧ್ವನಿ

ನೀವು ಮಾಯಿಸ್ ಎಂಬ ಶಬ್ದವನ್ನು ಪ್ರದರ್ಶಿಸುವ ನಿರೀಕ್ಷೆಯಂತೆ. ಈಗ ಒಂದು ಸಬ್ಹೆಲ್ಲ್ ಅನ್ನು ತೆರೆಯಿರಿ ಮತ್ತು ಮತ್ತೆ ಎಕೋ $ ನಾಯಿ ಟೈಪ್ ಮಾಡಿ. ನೀವು ಸಬ್ಹೆಲ್ಲ್ನಲ್ಲಿದ್ದರೂ ಸಹ ಈ ಸಮಯದಲ್ಲಿ ಮಾಯಿಸ್ ಪದವನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ ಎಂದು ನೀವು ನೋಡುತ್ತೀರಿ.

ಇದಕ್ಕೆ ಕಾರಣವೆಂದರೆ ರಫ್ತು ಆಜ್ಞೆಯು $ ಡಾಗ್ ವೇರಿಯಬಲ್ ಗ್ಲೋಬಲ್ ಅನ್ನು ಮಾಡಿದೆ. ನೀವು ರಫ್ತು ಕಮಾಂಡ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೂ ಕೂಡ ಅದರ ಮೂಲ ಪೋಷಕ ಚಿಪ್ಪುಗಳ ಮೇಲೆ ಯಾವುದೇ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ.

ಇದರಿಂದ ಆಶಾದಾಯಕವಾಗಿ ಸ್ಕ್ರಿಪ್ಟುಗಳನ್ನು ಬರೆಯುವಾಗ ನೀವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿರುವ ಶೆಲ್ ಮಟ್ಟವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಕೆಲವು ಮಹತ್ವವನ್ನು ಹೊಂದಿದೆ ಎಂದು ನೀವು ನೋಡಬಹುದು.

ನಾನು ನೀಡಿದ ಉದಾಹರಣೆಗಳು ತುಂಬಾ ಸರಳವಾದವು ಆದರೆ ಒಂದು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಮತ್ತೊಂದು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಕರೆ ಮಾಡಲು ಇದು ತುಂಬಾ ಸಾಮಾನ್ಯವಾಗಿದೆ, ಅದು ಬೇರೆ ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬೇರೆ ಹಂತಗಳಲ್ಲಿ ಓಡಿಸುತ್ತದೆ. ಶೆಲ್ ಮಟ್ಟವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ.