ভার্চুয়াল টার্মিনালে চলছে কিনা সনাক্ত করুন?


12

আমি লগইনে অটোলজিন করতে চাই tty1এবং তারপরে vlockএটি লক করতে ব্যবহার করব ।

বর্তমান টার্মিনালটি যদি কনসোল ভার্চুয়াল টার্মিনাল (উদাহরণস্বরূপ tty1) হয় তবে আমি বাশের থেকে কীভাবে সনাক্ত করতে পারি , যাতে আমি vlockলাইনটি প্রবেশ করতে পারি .bash_profileএবং কেবল লগ ইন করার পরে এটি চালাতে tty1পারি?


1
আমি মনে করি আপনার শিরোনামটি "ভার্চুয়াল টার্মিনালে চলমান থাকলে সনাক্ত করুন" তে পরিবর্তন করা উচিত কারণ ttyবর্তমান শেলটি সিউডো-টার্মিনাল ডিভাইসের সাথে সংযুক্ত কিনা তা সনাক্ত করার জন্য ভুল বোঝাবুঝি হতে পারে।
জোসেফ আর।

@JosephR। নির্দিষ্ট করার জন্য ধন্যবাদ, স্থির
কিরি

@ জোসেফআর: খারাপ কল। একজন সিউডো-টার্মিনাল ডিভাইস পি  TY না TTY। মূল শিরোনামে ফিরতে চলেছে।
ইনকনিস মিসেসি

উত্তর:


14

আপনি ttyবর্তমান ভার্চুয়াল টার্মিনালের নাম পেতে ব্যবহার করতে পারেন , তারপরে একটি caseবিবৃতি দিয়ে এর বিরুদ্ধে পরীক্ষা করুন :

#!/bin/sh

case $(tty) in /dev/tty[0-9]*)
    vlock ;;
esac

আরও ভাল, পরিবর্তে সমস্ত টার্মিনাল লগইন শেলগুলি ttys বলে ধরে নেওয়া উচিত।
কিরি

1
এক্সকে বাদ দেওয়ার দরকার নেই: এক্স এর অধীনে টার্মিনাল এমুলেটরটিতে স্ক্রিপ্টটি চলমান থাকলে ttyটার্মিনাল এমুলেটরের সিউডোটার্মিনাল প্রদর্শন করবে, এক্সটি যে শারীরিক টার্মিনালটি চলছে তা নয় not
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

5

এটি কেবলমাত্র STDIN (FD0) পরীক্ষা করার জন্য যথেষ্ট:

[ -t 0 ] && echo "TTY available" || echo "No TTY available"

ঠিক আছে, কারণ .bash_profileলগইন শেলগুলিতে ডাকা হয় এবং সাধারণ জিইউআই লগইনের কোনও টার্মিনাল থাকে না, সুতরাং একমাত্র টার্মিনাল লগইন শেল টিটিটি হওয়া উচিত। ভাল সন্ধান করুন
কিরি

1
যদি এই স্নিপেটটি কোনও বৃহত স্ক্রিপ্টে অন্তর্ভুক্ত করা হত যা এর স্টিডিনটি কোনও ফাইল থেকে পুনঃনির্দেশিত করেছিল, তবে এটি রিপোর্ট করবে যে কোনও ভিটি থেকে চালানো হলেও কোনও টিটিওয়াই উপলব্ধ নেই।
জোসেফ আর।

1
@ জোসেফআর সঠিক স্ক্রিপ্টগুলি ইন্টারেক্টিভ ইনপুট ধরে নিলে ব্যর্থতা এড়ানোর জন্য মানটি প্রায়শই cronবা atকাজের সাথে থাকে।
জেআরফেরগসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.