আমি যখন ভার্চুয়াল কনসোল বনাম একটি এক্সটার্মে আছি তখন আমার স্ক্রিপ্টটি কীভাবে জানতে পারে?


11

এক্সটার্মে ভার্চুয়াল কনসোল বনাম যখন আমার কয়েকটি স্ক্রিপ্ট (কীম্যাপ পরিবর্তন, পাবলিক কী যোগ করা) আলাদাভাবে কাজ করা দরকার। আসল কোডটি কী What's

#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi

উত্তর:


6

আমার কাছে মনে হচ্ছে আপনি সংযোগের জন্য কোনও এক্স সার্ভার আছে কিনা তা আপনি যাচাই করতে চান।

কিছুটা এইরকম:

if [ -n "$DISPLAY" ]; then
  : X
else
  : no X
fi

1
আমি স্ট্যাকেক্সচেঞ্জে তিনটি নিখুঁত উত্তর পাওয়ার অবস্থানে ছিলাম না।
জন বাবার-লুসারো 21

9

যদি আপনি নন-ইন্টারেক্টিভ শেল থেকে ইন্টারেক্টিভের পার্থক্য বোঝাতে চেয়েছিলেন তবে testএটি সনাক্ত করার জন্য ইনবিল্ট সমর্থনটি ব্যবহার করুন (কেএসএস আছে কিনা তা নিশ্চিত নয়, তবে কোর্টিলস থেকে বাইনারিও এটি সমর্থন করে):

test -t 0 # will return 0 for interactive shells

আপনি যদি সত্যিই বোঝাতে চান আপনি কোনও টিটি / পিটিআই / পিটিএস বা অন্য কোনও কিছুতে আছেন তবে আউটপুটটি পার্স করুন tty:

$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2

আমি স্ট্যাকেক্সচেঞ্জে তিনটি নিখুঁত উত্তর পাওয়ার অবস্থানে ছিলাম না।
জন বাবার-লুসারো 21

7

এটি অপারেটিং সিস্টেমের উপর নির্ভর করবে। লিনাক্সের জন্য, আপনি এটি করতে পারেন:

#!/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 এর সামগ্রীগুলি পরীক্ষা করুন এবং যথাযথ হিসাবে সেট করুন।


আমি স্ট্যাকেক্সচেঞ্জে তিনটি নিখুঁত উত্তর পাওয়ার অবস্থানে ছিলাম না।
জন বাবার-লুসারো 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.