"Sudo: উত্স: কমান্ড পাওয়া যায় নি"


15
$ source /etc/environment 

$ sudo source /etc/environment 
[sudo] password for t: 
sudo: source: command not found

দেখে মনে হচ্ছে bashএক্সিকিউট করার জন্য চালানো থেকে আলাদা শেল রয়েছে source /etc/environmentএবং শেলটি sourceবিল্টিনের মতো নেই।

তবে আমার এবং মূলের ডিফল্ট শেল দুটিই bash

$ echo $SHELL
/bin/bash

sudoIndeণগ্রহীতারা যদি আলাদা শেল ব্যবহার করে তবে তা কেন? আমি স্ল্যামের জবাব দেখেছি , তবে আমার ক্ষেত্রে বুঝতে পারছি না।


4
sourceএটি একটি শেল অন্তর্নির্মিত..আপনি sudoবাহ্যিক কমান্ডের মতো শেল বিল্টিন চালানোর জন্য ব্যবহার করতে পারবেন না ..
হিমাইল

আপনি যে ফাইলটি পড়তে পারবেন না, বা যে ফাইলটি পরিবেশিত হয়েছে তা পরবর্তী সুডো কমান্ডের ক্ষেত্রে প্রয়োগ করতে চান এমন সমস্যাটি কি?
র্যান্ডম 832

@ র্যান্ডম 832: ফাইলটিতে সংজ্ঞায়িত পরিবেশটি পরবর্তী সুডোর কমান্ডগুলিতে প্রয়োগ করতে চান
টিম

উত্তর:


23

sourceএটি একটি শেল অন্তর্নির্মিত, সুতরাং এটি শেল ছাড়া কার্যকর করা যায় না। তবে ডিফল্টরূপে sudoশেল চালাবেন না। থেকেsudo

প্রক্রিয়া মডেল

যখন sudo একটি কমান্ড চালায়, এটি কাঁটাচামচ (2) কল করে, উপরে বর্ণিত হিসাবে কার্যকর পরিবেশ নির্ধারণ করে, এবং শিশু প্রসেসে এক্সিকিউট সিস্টেম কল কল করে

আপনি যদি স্পষ্টভাবে শেল চালাতে চান তবে -sবিকল্পটি ব্যবহার করুন :

# sudo -s source /etc/environment

যা এখনও অকেজো কারণ শেলটি বের হওয়ার পরে পরিবেশের পরিবর্তনগুলি নষ্ট হয়ে যায়।


7

রাজত্ব ইন সমস্যা সমাধানের বদলে প্রশ্নের উত্তর এখানে উৎস একটি ফাইল যা শুধুমাত্র রুট পড়তে পারে (রা) আমাকে পথ সবচেয়ে সুস্পষ্ট:

source <(sudo cat /etc/environment)

এটি প্রক্রিয়া বিকল্প ব্যবহার করে । এটি catকমান্ডের আউটপুট নেয় এবং এটিকে একটি সিউডো-ফাইলে পরিণত করে, যা আপনি পাস করতে পারেন source। উত্স তারপরে বর্তমান শেলের কমান্ডগুলি চালায়।

নোট করুন যে বেশিরভাগ সিস্টেমে, /etc/environmentবিশ্ব-পঠনযোগ্য, সুতরাং আপনার কেবল এটি চালাতে সক্ষম হওয়া উচিত :

source /etc/environment

1
এটি কাজ করে, গৃহীত কেউ তা করেন না
ক্লাদিউ ক্রিঙ্গা

2

sudoএকটি কমান্ড প্রত্যাশা করে তবে আপনি শেল বিল্টইন দিচ্ছেন যাতে এটি আদেশটি সন্ধান করতে পারে না। আপনি যদি লিখেন type sourceতবে আউটপুট দেখতে পাবেন: source is a shell builtinএবং আউটপুট which sourceখালি।

উদাহরণস্বরূপ sudo straceকাজ করবে এবং which straceআউটপুট দেবে কারণ স্ট্রেস একটি কমান্ড।

সম্পাদনা: এছাড়াও, আপনি sudo su;sudo source /etc/environmentভালভাবে কাজগুলি দেখতে পারেন যাতে বিভিন্ন শেল ব্যবহার করা হয় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.