বাশ: কত নেস্টেড সেশন গভীর?


9

বলুন আমি bashশেলটি শুরু করি
... এবং তারপরে bashসেই শেলটির মধ্যে থেকে অন্য একটি অধিবেশন
... এবং তারপরে সেই bashঅধিবেশন থেকে অন্য একটি সেশন,
... এবং তারপরে সেই bashঅধিবেশন থেকে অন্য একটি সেশন,
... (বার এন) ইত্যাদি etc

সমস্ত এন সেশন থেকে বেরিয়ে আসতে আমাকে exitএন টাইপ করতে হবে ।

যে কোনও বাশ সেশনের মধ্যে থেকে আমি কত গভীরভাবে বাসা বেঁধে আছি তা আমি কীভাবে জানতে পারি?

আদর্শভাবে আমি $STYপর্দার সেশনের অনুরূপ কিছু পরিবেশের পরিবর্তনশীল খুঁজছি ।

উত্তর:


16

ব্যবহার SHLVL। থেকে man bash:

SHLVL  Incremented by one each time an instance of bash is started.

উদাহরণ:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

এটি ভাল, তবে আমি আমার সেটআপটিতে একটি সামান্য সমস্যা লক্ষ্য করেছি: - আমার .xinitrc একটি নিয়মিত প্রক্রিয়া হিসাবে একটি শেল শুরু করে, তবে অন্যটি ব্যবহার করে exec(যাতে যখন এই টার্মিনালটি বন্ধ হয়ে যায়, পুরো এক্সসেশন শেষ হয়)। $SHLVLএই টার্মিনালের জন্য দুটি পৃথক সংখ্যা উত্পাদন করে। এমন কোনও পরিবেশের পরিবর্তনশীল যা আরও শেল-নির্দিষ্ট?
tetris11

$BASH_SUBSHELLপ্রতিশ্রুতিবদ্ধ লাগছিল, কিন্তু বিতরণ করে না।
tetris11

1
@ টেট্রিস SHLVL11 হ্যাঁ..এটি কীভাবে কাজ করে this এই সমাধানটি ফিট হলে এটি পরীক্ষা করে দেখুন ..
হিমাইল

1
আহ, অবশ্যই - আমি নিজে সেট করতে পারেন SHLVL=0মধ্যে ~/.xinitrc। উজ্জ্বল, ধন্যবাদ
tetris 11
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.