আমি কোন শেলটি ব্যবহার করছি তা আমি কীভাবে চেক করব?


354

আমি পড়লাম যে টার্মিনাল শেল ছাড়া কিছুই নয়, এবং ইউনিক্স শেলের বিভিন্ন স্বাদ সরবরাহ করে:

  • বোর্ন শেল (এসএইচ)
  • সি শেল (সিএসএস)
  • টিসি শেল (tcsh)
  • Korn শেল (ksh)
  • বোর্ন অ্যাগেইন শেল (ব্যাশ)

প্রশ্নাবলী:

  • আমি যখন টার্মিনাল উইন্ডো খুলি, কোন শেলটি ডিফল্টরূপে খোলা হয়?
  • কতগুলি শেল ইনস্টল করা আছে তা আমি কীভাবে চেক করব?
  • আমি আমার অ্যাকাউন্ট থেকে ব্যবহৃত শেল কীভাবে পরিবর্তন করব?


@ কাসিয়াএ এটিও জিজ্ঞাসুবুটু
ডেইজি

দয়া করে নোট করুন যে টার্মিনালটি শেলের ইন্টারফেস (যা এক পর্যায়ে আসলে শারীরিক ইন্টারফেস হিসাবে ব্যবহৃত হত), এবং শেলটি টার্মিনাল নয় - এটি একটি কমান্ড ইন্টারপ্রেটার। আরও দেখুন askubuntu.com/a/640105/295286
Sergiy Kolodyazhnyy

উত্তর:


425

আপনি কোন শেল ব্যবহার করছেন তা দেখতে আপনি আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি টাইপ করতে পারেন:

echo $0

আপনি যদি ব্যাশ ( বোর্ন অ্যাগেইন শেল ) টার্মিনালটি ব্যবহার করছেন তবে ফলাফলটি নীচের মতো কিছু দেখতে পাবেন :

-bash

2
হয় 0একটি পরিবেশ পরিবর্তনশীল?
Mi_Onim

43
@ মি_অনিম $ 0 চলমান প্রক্রিয়াটির নাম। আপনি যদি এটি শেলের ভিতরে ব্যবহার করেন তবে এটি শেলের নামটি ফিরিয়ে দেবে। আপনি যদি এটি কোনও স্ক্রিপ্টের অভ্যন্তরে ব্যবহার করেন তবে এটি স্ক্রিপ্টের নাম হবে।
কিংমিলো

2
দ্রষ্টব্য : এটি ইন্টারেক্টিভের জন্য কাজ করবে না csh% echo $0 No file for $0., তবে এটির জন্য কাজ করেtcsh
সের্গি কলডিয়াজহনি

2
যখন কেউ সিএমলিঙ্ক হয় তখন কাজ করে না। ভালো লেগেছে bashযেমনsh
আনোয়ার

9
পরে আপনি থেকে খোলসের নাম পেতে @Anwar, একটি ভাল বিন্দু করে তোলে echo $0, ls -l `which <name>` যদি এটা অন্য শেল বাইনারি সিমলিঙ্ক হয় দেখতে।
জীবনআমারা

121

ডিফল্ট পরিবেশে আপনার শেলটি সন্ধান করতে আপনি SHELLপরিবেশের ভেরিয়েবলের মান পরীক্ষা করতে পারেন :

echo $SHELL

বর্তমান শেল উদাহরণটি সন্ধান করতে, বর্তমান শেল ইনস্ট্যান্সের পিআইডি থাকা প্রক্রিয়া (শেল) সন্ধান করুন।

শেলের বর্তমান উদাহরণের পিআইডি সন্ধান করতে:

echo "$$"

এখন পিআইডি থাকার প্রক্রিয়াটি সন্ধান করতে:

ps -p <PID>

একসাথে রেখে:

ps -p "$$"

27
EL শেলটি সিস্টেমের (বা ব্যবহারকারী) ডিফল্ট শেল, যা সাধারণত (তবে প্রয়োজনীয়ভাবে হয় না) শেল যা আসলে কোনও নির্দিষ্ট মুহুর্তে ব্যবহৃত হচ্ছে।
কিংমিলো

@কিংমিলো: ঠিক আপনিই আছেন, উত্তর পরিবর্তিত হয়েছে।
হেইমাইল

'Su - <ব্যবহারকারীর নাম' এর মাধ্যমে কোনও ব্যবহারকারীর সাথে স্যুইচ করার সময় আমি এটি বেশ কার্যকর বলে মনে করেছি, যেমন পোস্টগ্রিজ, জেনকিনস সেটআপ করার জন্য ...
বুলি

1
echo $SHELLআমাকে দিয়েছে /bin/cshএবং ps -p $$আমাকে দিয়েছে 22673 pts/1 00:00:00 bash। কিংমিলো ব্যাখ্যা করলেন (উপরে) কেন তারা এক নয়।
18446744073709551615

@ 18446744073709551615 আমি সেগুলিও একই রকম বলিনি। উত্তরটি আবার মনোযোগ দিয়ে পড়ুন; ডিফল্ট এবং বর্তমান শব্দবন্ধ নোট করুন ।
হিমাইল

25

$SHELLআপনাকে ডিফল্ট শেল দেয়। $0আপনাকে বর্তমান শেল দেয়

উদাহরণস্বরূপ: আমার কাছে আমার ডিফল্ট শেল হিসাবে বাশ রয়েছে, যা আমি আমার টার্মিনাল অ্যাপ্লিকেশানের জন্য ব্যবহার করি। কিন্তু আমার iTerm2 অ্যাপের জন্য, আমি কমান্ড ব্যবহার যেমন উইন্ডোটি খুলে: /bin/ksh

সুতরাং আমার iTerm2 এ $0দেয় /bin/ksh$SHELLআমাকে /bin/bashআইটার্ম 2 এ দেয় । $0, $SHELLআমাকে /bin/bashটার্মিনালে দেয়


2
এটি অন্যান্য শীর্ষ-ভোট দেওয়া উত্তরের একটি সুন্দর বিশৃঙ্খলা। ধন্যবাদ.
মাইকেল হফম্যান

আমার জন্য, আমি zsh ইনস্টল করেছি এবং এটি বর্তমান ডিফল্ট, ব্যাশে পরিবর্তন করতে, আমাকে bashটার্মিনালে টাইপ করতে হবে । Zsh এ ফিরে যেতে, টাইপ করুনzsh
ইউসুফ আজাদ

8

আপনার ব্যবহারকারীর জন্য ডিফল্ট শেলটি কোনটি জানতে, আপনি চালাতে পারেন:

echo "$SHELL"

উদাহরণস্বরূপ, আপনি যদি ব্যাশ ব্যবহার করছেন তবে আপনার নিম্নলিখিত আউটপুটটি পাওয়া উচিত:

/bin/bash

আপনি যদি কোনও কনফিগারেশন পরিবর্তন না করেন তবে এটি উশুন্টুতে ডিফল্ট শেল থেকে বাশ হওয়া উচিত।


/ বিন / শ হ'ল শেল কমান্ড ভাষা এবং বোর্ন শেল নয়, দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
কিংমিলো

@kingmilo কোন আছে /bin/shআমার উত্তর রেফারেন্স
কস

@ কোল সম্পাদনার আগে ছিল। দয়া করে নোট করুন $ শেলটি সিস্টেম (বা ব্যবহারকারী) এর জন্য ডিফল্ট শেল, যা সাধারণত (তবে প্রয়োজনীয় নয়) যে শেলটি যে কোনও মুহুর্তে প্রকৃতপক্ষে ব্যবহৃত হচ্ছে।
কিংমিলো

1
@kingmilo উত্তরটি আবার পড়ে আমার মনে হয় আপনার উদ্বেগ কী তা আমি বুঝতে পেরেছি, সম্ভবত আমি নিজেকে ভালভাবে প্রকাশ করি নি। আমি আমার উত্তর এর "বর্তমানে" অর্থ ব্যাখ্যা
কস

1
@ ফ্রেডেরিকঝে মাছ এখানে কিছুটা বিজোড়। $$পরিবর্তনশীল আসলে হয় POSIX দ্বারা সংজ্ঞায়িত এবং শাঁস বেশীরভাগ কাজ করবে। মাছ এখানে স্ট্যান্ডার্ড অনুসরণ না করার সিদ্ধান্ত নিয়েছে তাই আমার মনে হয় এটি এড়ানো উপযুক্ত। আমি নিশ্চিত করতে পারি যে $$sh, ড্যাশ, ব্যাশ, zsh, ksh, ছাই, tshsh এবং csh এ প্রত্যাশার মতো কাজ করে। আসলে, আমার মাথার উপরের অংশটি আমি মাছ ছাড়া এটি অন্য কোনও শেল সম্পর্কে ভাবতে পারি না যেখানে এটি কাজ করে না।
terdon

8

অন্যান্য উত্তরগুলি শেল সুনির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করে থাকে তবে আমরা কোন শেলটি ব্যবহার করছি তা আবিষ্কার করার চেষ্টা করছি, সুতরাং তারা সমস্যার উত্তরটি ধরে নিয়েছে। উদাহরণস্বরূপ উত্তরগুলির কোনওটিই মাছের উপর কাজ করবে না।

sh -c 'ps -p $$ -o ppid=' | xargs ps -o comm= -p

পরিবর্তে sh এর অনুরোধে $$ বাক্য গঠনটি ব্যবহার করুন তবে তারপরে আমরা পিআইডি নয় পিপিআইডি খুঁজছি। সেন্টিমিডি খুঁজতে পিপিআইডি ব্যবহার করুন।

sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'

@ মুরু উন্নতির জন্য ধন্যবাদ


2
আপনি শিরোনাম (এবং সুতরাং গুলি) বাদ দিতে সিএ ppid=/ ব্যবহার করতে পারেন এবং কোন ফাইলটি চলছে তা দেখার জন্য বিবেচনা করুন (যেহেতু শেলটি যা চালিয়েছিল আউটপুটটি ম্যানিপুলেট করা যায়)। cmd=tail -1/proc/.../execmd
মুড়ু

1

4

মূল পোস্টটি তিনটি প্রশ্ন জিজ্ঞাসা। প্রদত্ত উত্তরগুলি প্রথম প্রশ্নটি কভার করে, "আমি যখন টার্মিনাল উইন্ডো খুলি, তখন কোন শেলটি ডিফল্টরূপে খোলা হয়?" তারা এমন একটি প্রশ্নেরও উত্তর দেয় যা জিজ্ঞাসা করা হয়নি, যেমন "টার্মিনালে বর্তমানে কোন শেল চলছে তা আমি কীভাবে জানতে পারি?" তবে, আমি যতদূর দেখতে পাচ্ছি যে কেউই দ্বিতীয় বা তৃতীয় প্রশ্নের প্রাথমিকভাবে জিজ্ঞাসা করেনি, যথা - "আমি কয়টি শেল ইনস্টল করা আছে তা কীভাবে চেক করব?" এবং "আমি আমার অ্যাকাউন্ট থেকে ব্যবহৃত শেল কীভাবে পরিবর্তন করব?"

  • "কতগুলি শেল ইনস্টল করা আছে তা আমি কীভাবে চেক করব?" নিম্নলিখিত কমান্ডটি সমস্ত উপলব্ধ শেল তালিকাভুক্ত করবে:

বিড়াল / ইত্যাদি / শাঁস

উদাহরণস্বরূপ, উবুন্টু 18.10 এর একটি ডিফল্ট ইনস্টলেশনতে এটি দেয়:

# / ইত্যাদি / শেল: বৈধ লগইন শেল

/ বিন / SH

/ বিন / ড্যাশ

/ বিন / ব্যাশ

/ বিন / rbash

তবে ডিফল্টরূপে sh হ'ল ড্যাশের একটি প্রতীকী লিঙ্ক, আরবাশ বিকল্পের সাথে বাশ-এর ​​সাথে সংযোগ রয়েছে ("সীমাবদ্ধ বাশ") সুতরাং উপরের তালিকাটি যেমনটি বলেছে তেমন চারটি নয়, কেবল দুটি শেল রয়েছে। নীচের কমান্ডটি আপনাকে দেখাবে যে তালিকাভুক্ত শেলগুলি আসলে প্রতীকী লিঙ্কগুলি রয়েছে এবং যদি তাই হয় তবে সেগুলি এখানে লিঙ্ক করেছে: ls -l / bin

  • এখন "আমার অ্যাকাউন্ট থেকে ব্যবহৃত শেল কীভাবে পরিবর্তন করব?" প্রশ্নের জন্য ধরে নেওয়ার অর্থ এই যে "টার্মিনালটি যে ডিফল্ট শেলটি ব্যবহার করবে সেটি স্থায়ীভাবে কীভাবে পরিবর্তন করব", https://wiki.ubuntu.com/ChangingShells# পরিবর্তন_আপনার_লগিন_শেল_ যা_স_ স্থায়ী উত্তর রয়েছে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.