কেন আমি যখন ব্যবহারকারীর স্যুইচ করি su <username>
এবং তারপরে এক্সিকিউট করা who am i
হয় সেই আগের ব্যবহারকারীকে আমি আউটপুট করি যা আমি লগইন করেছি এবং আমি যেটি পরিবর্তন করেছিলাম তা নয়?
কেন আমি যখন ব্যবহারকারীর স্যুইচ করি su <username>
এবং তারপরে এক্সিকিউট করা who am i
হয় সেই আগের ব্যবহারকারীকে আমি আউটপুট করি যা আমি লগইন করেছি এবং আমি যেটি পরিবর্তন করেছিলাম তা নয়?
উত্তর:
আপনি সম্ভবত ভুল কমান্ড চালাচ্ছেন।
who
কে লগ ইন হয়েছে তা বোঝাতে বোঝানো হয়েছে, অর্থাত্ কোন ব্যবহারকারী টার্মিনালের মালিক। এটি এর মতো একটি লাইন ফেরত দেয়:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
এর অর্থ হল এটি চালানো ব্যক্তির কার্যকর ব্যবহারকারী আইডি কী তা আপনাকে দেখাতে। এটি কেবলমাত্র একটি একক নাম দেয়, (এবং এটি চলার সমতুল্য id -un
):
ckhan
আমি মনে করি আপনি who am i
টার্মিনালে আক্ষরিকভাবে টাইপ করেছেন, যা who
দুটি উপেক্ষা করা যুক্তি ( am
, i
) দিয়ে চলেছিল ।
দেখুন man who
এবং man whoami
আরও বিশদ জন্য।
আমার উবুন্টু 12.04.2 ম্যান পেজ অনুসারে 'কে' আদেশের জন্য, 'আমি কে' (বা যিনি কোনও দুটি যুক্তি সহ) 'হু-এম' হিসাবে সমান এবং আপনাকে STDIN এর সাথে যুক্ত হোস্ট-নেম এবং ব্যবহারকারী দেওয়া উচিত। তবে আমি 'আমি কে' এর সাথে কোনও আউটপুট পাই না। হয় ম্যান পৃষ্ঠাটি ভুল বা কমান্ডটিতে একটি বাগ রয়েছে। নির্বিশেষে, ckhan দ্বারা পূর্বে জবাব হিসাবে, 'হোয়ামি' কমান্ড আপনাকে আপনার কার্যকর ব্যবহারকারী আইডির জন্য ব্যবহারকারীর নাম দেবে। কমপক্ষে উবুন্টু 12.04.2 এ, 'আমি কে' বা 'হোয়ামি' আইডি-র কোনওটিই আপনাকে বর্তমান টার্মিনালে লগ ইন করা ব্যক্তির কেবলমাত্র ব্যবহারকারীর নাম দেবে না। কাজের ভিত্তিতে আপনি এটি সহ পেতে পারেন:
who | sed 's/ .*//'
কার্যকারিতা :
ls -l `tty` | awk '{print $3}'
যে প্রতিস্থাপন হিসাবে কাজ করে who am i | awk '{print $1}'
। নীচে ব্যাখ্যা:
অনেক সিস্টেমে " who am i
" " " এর সমতুল্য who -m
। এখানে সমস্যাটি কিছু টার্মিনালগুলির সাথে , " who -m
" কিছুই ফেরায় না!
উদাহরণস্বরূপ # 1 একটি xfce4- টার্মিনাল থেকে চালানো
Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ #
তবে জিনোম-টার্মিনাল থেকে উদাহরণ # 2 (একই কম্পিউটার, একই কমান্ড)
Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ #
এটি জিনোম-টার্মিনালের উত্স এন্ট্রি যোগ না করার একটি পরিণতি বলে মনে হচ্ছে…
stat
পরিবর্তে ব্যবহার করুন: stat -c '%U' "$(tty)"
আপনার সম্ভবত পার্স করা উচিত নয় who am i
, যেহেতু ব্যবহারকারীর নামগুলিতে কিছু বিরল ক্ষেত্রে স্পেস থাকতে পারে।
am
এবংi
উপেক্ষা করা হয় না, তারা এমনকি পসিক্স দ্বারা নির্দিষ্ট করা হয়: "পসিক্স লোকালে, আউটপুটটিকে অনুরোধকারী ব্যবহারকারীর বর্ণনায় সীমাবদ্ধ করুন,-m
বিকল্পটির সমতুল্য " "