sudo কমান্ডটি /root/.bashrc উত্স দেয় না


27

আমি PATHআমার /root/.bashrc ফাইলটিতে চলকটিতে একটি কাস্টম পাথ যুক্ত করেছি

আমি যখন করি sudo su; echo $PATH, এটি '/ পথ / থেকে / কাস্টম / বিনগুলি' এন্ট্রি প্রদর্শন করে।

তবে আমি sudo sh -c 'echo $PATH'এটি করি , এটি দেখায়, /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

.Bashrc ফাইলে যুক্ত ফোল্ডারের পাথগুলি দৃশ্যমান নয়।

Sudo কমান্ডের কোনও রুট ব্যবহারকারীর মতো পরিবেশ নেই?

sudo  bashrc 

উত্তর:


32

.bashrcবাশের একটি কনফিগারেশন ফাইল, কেবলমাত্র এটি ইন্টারেক্টিভভাবে কার্যকর করা হয়। এটি কেবল তখনই লোড হয় যখন আপনি বাশ শুরু করেন, আপনি যখন অন্য কোনও প্রোগ্রাম চালানোর সময় shনয় ( যেমন নামের মাধ্যমে বাশকে ডাকেও না sh)। এবং এটি কেবল তখনই লোড হয় যখন বাশ ইন্টারেক্টিভ হয়, যখন এটি কোনও স্ক্রিপ্ট বা কমান্ড ব্যবহার করে না -c

sudo sh -c 'echo $PATH'বা sudo bash -c 'echo $PATH'একটি ইন্টারেক্টিভ শেল প্রার্থনা করে না, তাই .bashrcজড়িত নয়।

sudo su; echo $PATHরুটের শেলের একটি ইন্টারেক্টিভ উদাহরণ চালায়। যদি এটি বাশ, তবে ~root/.bashrcবোঝা হয়। এই স্নিপেটটি echo $PATHএকবার এই ইন্টারেক্টিভ শেলটি শেষ হয়ে গেলে কার্যকর করে , তাই ইন্টারেক্টিভ শেলের মধ্যে যা ঘটে তা শেষ পর্যন্ত স্নিপেট প্রিন্ট করে তার কোনও প্রভাব রাখে না। তবে আপনি যদি echo $PATHইন্টারেক্টিভ শেলের প্রম্পটে প্রারম্ভ করে টাইপ করেন তবে আপনি sudo suসেট করা মানটি দেখতে পাবেন ~root/.bashrc

যেহেতু .bashrcপ্রতিটি ইন্টারেক্টিভ শেলের সাথে যুক্ত হয়, লগইন শেল দ্বারা নয় (এমনকি ইন্টারেক্টিভ লগইন শেল দ্বারাও নয়, যা বাশের মধ্যে নকশার ত্রুটিযুক্ত) তাই পরিবেশের ভেরিয়েবলগুলি সংজ্ঞায়নের জন্য এটি ভুল জায়গা। ব্যবহার করুন .bashrcযেমন কি-বাইন্ডিং, alias লেখা এবং সমাপ্তির সেটিংস ইন্টারেক্টিভ ব্যাশ সেটিংসের জন্য। আপনি লগ ইন করার সময় লোড হওয়া ফাইলগুলিতে পরিবেশের ভেরিয়েবলগুলি সেট করুন: ~/.pam_environmentবা ~/.profile

সুতরাং সেট PATHমধ্যে .profileপরিবর্তে .bashrc, এবং হয় সাথে একটি লগ-ইন শেল চালানোর sudo -i 'echo $PATH', অথবা স্পষ্টভাবে উৎস .profileসঙ্গে sudo sh -c '. ~/.profile; echo $PATH'


1
শাঁস সম্পর্কে অনেক প্রাসঙ্গিক বক্তব্য সম্বোধন করেছে .... ধন্যবাদ ....

1
আমি কীভাবে এটি যুক্ত করব .profile? মানে /root/.profileনাকি /home/user/.profile? আমি export PATH=$PATH:/mydirউভয় যোগ করার চেষ্টা । কাজ হয়নি। আমি ছাড়া চেষ্টা করেছিলাম, এটিও exportকাজ করে না।
মিথ্যা পকেট

@ ফলস পকেট কিসের জন্য কাজ করেনি? আপনার একটি নতুন প্রশ্ন জিজ্ঞাসা করা উচিত এবং আপনি ঠিক কী করছেন তা ব্যাখ্যা করা উচিত।
Gil

যে জিনিসটি কাজ করেনি তা হ'ল ওপি একই জিনিসটি করার চেষ্টা করছে। আমি আমার সুপারভাইজারের PATH তে একটি ডিরেক্টরি যুক্ত করার চেষ্টা করছি। আমার কোনও নতুন প্রশ্ন করা উচিত নয়, যেহেতু সেই প্রশ্নটি এই প্রশ্নের সদৃশ হবে।
মিথ্যা পকেট

@ ফলসপকেটস তবে স্পষ্টতই আপনি সুপারভাইজার অ্যাকাউন্টে পৌঁছানোর জন্য একই জিনিস করছেন না। এবং যেহেতু আপনি যা করছেন তা আপনি বলেননি, তাই আমার উত্তরে ইতিমধ্যে যা বলা হচ্ছে তার পুনরাবৃত্তি করা ছাড়া আমি আপনাকে অন্য কোনও সাহায্য করতে পারি না।
গিলস 'তাই মন্দ হতে থামুন'

14

তাকান -Eএবং -iঅপশন।

-E: ব্যবহারকারী তাদের বিদ্যমান পরিবেশের পরিবর্তনশীলগুলি সংরক্ষণ করতে চান এমন সুরক্ষা নীতিতে ইঙ্গিত করে। ব্যবহারকারীর পরিবেশ সংরক্ষণের অনুমতি না থাকলে সুরক্ষা নীতি একটি ত্রুটি ফিরিয়ে দিতে পারে।

-i: লগইন শেল হিসাবে লক্ষ্য ব্যবহারকারীর পাসওয়ার্ড ডাটাবেস এন্ট্রি দ্বারা নির্দিষ্ট শেলটি চালান। এর অর্থ হ'ল। প্রোফাইল, বা লগিনের মতো লগইন-নির্দিষ্ট সংস্থান ফাইলগুলি শেলটি দ্বারা পঠিত হবে। যদি একটি কমান্ড নির্দিষ্ট করা থাকে, এটি শেলের -c বিকল্পের মাধ্যমে কার্যকর করার জন্য শেলের কাছে প্রেরণ করা হয়। যদি কোনও কমান্ড নির্দিষ্ট না করা থাকে তবে একটি ইন্টারেক্টিভ শেল কার্যকর করা হয়। sudo শেল চালানোর আগে সেই ব্যবহারকারীর হোম ডিরেক্টরিতে পরিবর্তন করার চেষ্টা করে। কমান্ডটি এমন একটি পরিবেশের সাথে চালিত হয় যেমন ব্যবহারকারীর লগ-ইন করার সময় প্রাপ্ত হয় do ব্যাবহৃত হচ্ছে.


3

আপনি করতে পারেন sudo bash, যা ম্যানুয়াল পৃষ্ঠা / ডকুমেন্টেশনে bashডকুমেন্ট হিসাবে স্টার্টআপ ফাইলগুলি পড়ে bash। তবে দয়া করে নোট করুন যে এটি HOMEপরিবেশের পরিবর্তনশীলকে সঠিকভাবে সেট না করে । এটি সিস্টেম-বিস্তৃত bashস্টার্টআপ ফাইলে স্থির করা যেতে পারে ( /etcসঠিক অবস্থানটি ডিস্ট্রোর উপর নির্ভর করে) - $uid0 হয় কিনা তা পরীক্ষা করুন ।

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