টার্মিনালের জন্য ডিফল্ট শেল কী?


51

ধরা যাক, আমি একটি টার্মিনাল খুলে কিছু শেল কমান্ড প্রবেশ / সম্পাদন করেছি।

তবে আমি স্পষ্টভাবে বাশ বা অন্য কোনও শেল ডাকে নি।

ডিফল্টরূপে কোন শেল ব্যবহৃত হত?

উত্তর:


51

আপনার লাইনে একটি নির্দিষ্ট করা /etc/passwd(এটি একটি :পৃথক রেখা এবং শেলটি চূড়ান্ত।

উদাহরণস্বরূপ আমার:

chris:x:1000:1000:Chris,,,:/home/chris:/bin/bash

এটি এখানে /bin/bash(উবুন্টু ডিফল্ট)

আপনি এটি ব্যবহার করতে পারেন chsh:

$ chsh
Password: 
Changing the login shell for chris
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]:

এটি আমার শেলটি আমাকে বলছে /bin/bashএবং আমাকে এটি পরিবর্তন করতে দিচ্ছে।

অবশেষে, echo $SHELLএকই কাজ করবে:

$ echo $SHELL
/bin/bash

যদি এটি বাশ হয় তবে কেন কখনও কখনও এটি সুডো বাশ -c "নেটস্ট্যাট -্যান | গ্রেপ লিস্টেন | গ্রেপ-ভি ^ ইউনিক্স" এর মতো স্পষ্টভাবে আহবান করা হয় ??
DrStrangeLove

আমি মনে করি এটি ব্যক্তিগতভাবে একটি খারাপ আদেশ - এর কোনওটির জন্যও মূলের প্রয়োজন হয় না। যদি করেনি , এটা ভাল হিসেবে লেখা যেতে হবে sudo netstat -an | grep LISTEN | grep -v ^unix। আমি এটিকে বন্ধ করার জন্য কোনও কারণ দেখি না subs
সিসিয়াম

2
@ ডিআরস্ট্রঞ্জলভ: পাইপে একাধিক কমান্ডের যদি রুট অনুমতির প্রয়োজন হয়, তবে sudo bash -c "..."নিশ্চিত করতে হবে যে পুরো পাইপটি রুট দ্বারা কার্যকর করা হয়েছে।
কিথ থম্পসন

কোন কমান্ডের মূল (এবং কেন) প্রয়োজন তা যদি আপনি না জানেন তবে এগুলি চালানো উচিত নয়। অন্যথায়, প্রয়োজনের চেয়ে আরও কোনও আদেশ / প্রোগ্রাম / স্ক্রিপ্টকে কেন বিশ্বাস করবেন। আপনি না পারেন, তাহলে commandA | sudo commandB | commandC, আপনি একটি কাজ করতে পারে sudo idপ্রথম (রান idকমান্ড root, কিন্তু একটি "acquires পাসওয়ার্ড বিজ্ঞপ্তি ছাড়াই ব্যবহার উবুন্টু যে (ডিফল্ট) 15 মিনিট স্থায়ী হয় টোকেন"।
waltinator

2
আপনি যদি ব্যবহার করেন chshতবে এই পরিবর্তনটি দেখতে আপনাকে অবশ্যই লগ আউট এবং লগ ইন করতে হবে
নিল ট্রাফট

17

উবুন্টুতে টার্মিনালগুলিতে GNU ব্যাশ হ'ল শেল default সিস্টেম বুট-এ স্ক্রিপ্টগুলি সঞ্চালিত হলে ড্যাশ ব্যবহার করা হয়, কারণ এটি ড্যাশ / বিন / শ হয়।

এটি $ শেল পরিবেশগত পরিবর্তনশীলতে সংজ্ঞায়িত করা হয়েছে। আপনি echo $SHELLটার্মিনাল টাইপ করে পরীক্ষা করতে পারেন ।


14

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

echo $SHELL

তবে আপনি বর্তমানে কোন শেলটিতে রয়েছেন তা জানতে (আপনি এটি পরিবর্তন করে থাকতে পারেন) টাইপ করুন

ps -p $$

উদাহরণস্বরূপ আপনি দেখতে পাবেন যে শেলটি উদাহরণ আউটপুটে বাশ

  PID TTY          TIME CMD
 3500 pts/0    00:00:01 bash

আর একটি পদ্ধতি ব্যবহার করা হয়

echo $0

এটি কেবলমাত্র বর্তমান শেলের নামটি ফিরিয়ে দেবে।


সরলতার জন্য +1echo $0
ডিজেথমস

দুর্দান্ত উত্তর! ধন্যবাদ, কোনও কারণে প্রতিধ্বনি $ শেল কাজ করে না (সর্বদা এটি ব্যবহৃত হয়) এবং আপনার দুটি বিকল্প কাজ করে। ধন্যবাদ!
উলফডন

3

ডিফল্টরূপে এটি বাশ:

env | grep ^SHELL=

বেশিরভাগ ক্ষেত্রে উত্পাদন হবে

SHELL=/bin/bash

অগত্যা। আপনি যদি নতুন ব্যবহারকারী তৈরি করেন তবে useraddএটি ডিফল্ট হয় sh$ useradd -D|grep SHELL SHELL=/bin/sh
স্পারহাক

+1, কারণ নির্বাচিত উত্তরটির জন্য কম টাইপ করা দরকার, তবে কিছু করার একাধিক উপায় থাকা ভাল।

2

বর্তমান শেলের এক্সিকিউটেবল ফাইলের পাথ ব্যবহার করতে পারেন

readlink -f /proc/$$/exe

কিছু সম্ভাব্য ফলাফল:

  • /bin/bash
  • /usr/bin/bash
  • /usr/bin/zsh
  • /home/stan/.linuxbrew/Cellar/zsh/5.2/bin/zsh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.