এক্সটার্মে ভার্চুয়াল কনসোল বনাম যখন আমার কয়েকটি স্ক্রিপ্ট (কীম্যাপ পরিবর্তন, পাবলিক কী যোগ করা) আলাদাভাবে কাজ করা দরকার। আসল কোডটি কী What's
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
এক্সটার্মে ভার্চুয়াল কনসোল বনাম যখন আমার কয়েকটি স্ক্রিপ্ট (কীম্যাপ পরিবর্তন, পাবলিক কী যোগ করা) আলাদাভাবে কাজ করা দরকার। আসল কোডটি কী What's
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
উত্তর:
আমার কাছে মনে হচ্ছে আপনি সংযোগের জন্য কোনও এক্স সার্ভার আছে কিনা তা আপনি যাচাই করতে চান।
কিছুটা এইরকম:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
যদি আপনি নন-ইন্টারেক্টিভ শেল থেকে ইন্টারেক্টিভের পার্থক্য বোঝাতে চেয়েছিলেন তবে testএটি সনাক্ত করার জন্য ইনবিল্ট সমর্থনটি ব্যবহার করুন (কেএসএস আছে কিনা তা নিশ্চিত নয়, তবে কোর্টিলস থেকে বাইনারিও এটি সমর্থন করে):
test -t 0 # will return 0 for interactive shells
আপনি যদি সত্যিই বোঝাতে চান আপনি কোনও টিটি / পিটিআই / পিটিএস বা অন্য কোনও কিছুতে আছেন তবে আউটপুটটি পার্স করুন tty:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
এটি অপারেটিং সিস্টেমের উপর নির্ভর করবে। লিনাক্সের জন্য, আপনি এটি করতে পারেন:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
এটি অবশ্যই ধরে নেয় যে আপনি TERMনিজেই পরিবেশের পরিবর্তনশীল পরিবর্তন করেন নি , যা স্বয়ংক্রিয়ভাবে linuxতখনই সেট হয়ে থাকে যখন আপনি ভার্চুয়াল কনসোলে লগইন করেন (উবুন্টু এর অধীনে এটি xtermকনসোল অ্যাপ্লিকেশনগুলিতে সেট করা থাকে তবে এটি ওএসের মধ্যে পৃথক হতে পারে)। আপনি ব্যবহার করছেন এমন বিভিন্ন অ্যাপ্লিকেশনগুলিতে TERM এর সামগ্রীগুলি পরীক্ষা করুন এবং যথাযথ হিসাবে সেট করুন।