CentOS এ directory PATH তে একটি ডিরেক্টরি যুক্ত করছেন?


84

আমরা সবেমাত্র আমাদের নতুন সার্ভার (গুলি) পেয়েছি এবং আমরা সেগুলির উপরে CentOS চালিয়ে যাচ্ছি। রুবি এন্টারপ্রাইজ সংস্করণ সফলভাবে ইনস্টল করার পরে, আমি এখন /usr/lib/ruby-enterprise/binএটি সার্ভারে ডিফল্ট রুবি ইন্টারপ্রেটার হিসাবে তৈরি করতে আরইইই / বিন (অবস্থিত ) ডিরেক্টরিটি যুক্ত করতে চাই।

আমি নিম্নলিখিতগুলি চেষ্টা করেছি, যা এটি কেবল বর্তমান শেল সেশনে যুক্ত করেছে:

export PATH=/usr/lib/ruby-enterprise/bin:$PATH

সমস্ত ব্যবহারকারীর জন্য এই ডিরেক্টরিটি permanent PATH এ স্থায়ীভাবে যুক্ত করার সঠিক পদ্ধতি কী হবে । আমি বর্তমানে মূল হিসাবে লগ ইন করছি।

আগাম ধন্যবাদ!

উত্তর:


115

এই জাতীয় /etc/profileজিনিসগুলির জন্য সম্পাদনা করা ভাল ধারণা নয় কারণ আপনি যখনই CentOS এই ফাইলটির জন্য কোনও আপডেট প্রকাশ করেন তখন আপনি আপনার সমস্ত পরিবর্তন হারাবেন। এটি ঠিক এটির /etc/profile.dজন্য:

# echo 'pathmunge /usr/lib/ruby-enterprise/bin' > /etc/profile.d/ree.sh
# chmod +x /etc/profile.d/ree.sh

আবার লগ ইন করুন এবং আপনার (নিরাপদে) আপডেট করা PATH উপভোগ করুন:

# echo $PATH
/usr/lib/ruby-enterprise/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# which ruby
/usr/lib/ruby-enterprise/bin/ruby

আবার লগ ইন করার পরিবর্তে, আপনি প্রোফাইলটি পুনরায় লোড করতে পারেন:

# . /etc/profile

এটি $PATHভেরিয়েবল আপডেট করবে ।


1
~/.profileএছাড়াও অন্য বৈধ বিকল্প
জিফার

4
হ্যাঁ, একক ব্যবহারকারীর জন্য। তবে প্রশ্নটি ছিল সমস্ত ব্যবহারকারীর জন্য প্যাথএইচ পরিবর্তন করার বিষয়ে ।
মাইক

2
@ মাইক এই প্যাথুনিজ কমান্ডটি কী?
নিকোলাই লেসচভ

@ নিকোলাই লেশকভ আমি নিশ্চিত যে এটি কেবল $ পথের পথ জুড়েছে।
মাইক

@ নিকোলাইলিচভ এটি একটি ফাংশন যা / ইত্যাদি / প্রোফাইলে সংজ্ঞায়িত করা হয়
ক্রেজিফিল

11

ফোমঙ্কের পরামর্শ অনুসরণ করার পরে আমি চেক আউট করেছিলাম /etc/bashrc, যেখানে আমি লক্ষ্য করেছি যে "পরিবেশের উপাদানগুলি / ইত্যাদি / প্রোফাইলে যায়" " আমি সন্ধানের দিকে এগিয়ে গেলাম /etc/profile, আমি এটি দেখেছি:

pathmunge () {
    if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
       if [ "$2" = "after" ] ; then
          PATH=$PATH:$1
       else
          PATH=$1:$PATH
       fi
    fi
}

[...]

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
fi

আমার সমস্যা সমাধানের জন্য, আমি কেবলমাত্র pathmunge /usr/lib/ruby-enterprise/binবিবৃতিটির নীচে যুক্ত করেছি । এটি আমার সমস্যা সমাধান করেছে।


"$EUID" = "0"এই প্রসঙ্গে কী বোঝাতে পারে কেউ ?
এলি

EUID 0 এর অর্থ হল ব্যবহারকারী রুট।
বিবাজা 42

6
আপনার /etc/profile.d ব্যবহার করা উচিত। আমার উত্তর নীচে দেখুন।
মাইক

@ মাইককনিগলিয়ারো উত্তরটিকে সঠিক হিসাবে গ্রহণ করার বিষয়টি দয়া করে বিবেচনা করুন। তার উপায় সঠিক। এটি সেভাবে কাজ করার জন্য বিকশিত হয়েছে। /etc/profile.d/ফোল্ডারে থাকা ফাইলগুলি একবার দেখুন এবং আপনি এটি লক্ষ্য করবেন। এছাড়াও, যেমনটি তিনি বলেছিলেন, একটি সিস্টেম আপডেট আপনার সমাধানটিকে পূর্বাবস্থায় ফিরিয়ে আনতে পারে।
কাও কুনহা

4

"/ Etc / passwd ফাইল পড়ে / বিন / লগইন ব্যবহার করে একটি সফল লগইন করার পরে একটি ইন্টারেক্টিভ লগইন শেল শুরু করা হয় This

একটি ইন্টারেক্টিভ নন-লগইন শেল সাধারণত শেল প্রোগ্রাম (যেমন, [প্রম্পট] bin / বিন / বাশ) ব্যবহার করে বা / বিন / সু কমান্ড দ্বারা কমান্ড-লাইনে শুরু হয় is একটি ইন্টারেক্টিভ নন-লগইন শেলটি গ্রাফিকাল পরিবেশের মধ্যে থেকে এক্সটার্ম বা কনসোলের মতো টার্মিনাল প্রোগ্রামের সাথেও শুরু করা হয়। শেল আবাহন সাধারণত কপি পিতা বা মাতা পরিবেশ এবং তারপর এই ধরনের অতিরিক্ত প্রারম্ভে কনফিগারেশন নির্দেশাবলীর জন্য ব্যবহারকারীর ~ / .bashrc ফাইল সার্চ। " Http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html

অতএব আমি বাশার্কে পরিবেশের পরিবর্তনগুলি রাখব না, কারণ এটি কেবল সাধারণ সম্মেলনের বিরুদ্ধে নয়, গ্রাফিকাল ডেস্কটপ এনভায়রনমেন্ট থেকে টার্মিনালটি চাওয়ার সময় আপনি আপনার বাশার্ক ভেরিয়েবলগুলিও মিস করবেন miss

রেডহ্যাটে অন /etc/profileআমি এই মন্তব্যটি পেয়েছি:

"সিস্টেমের প্রশস্ত এলিয়াস এবং ফাংশনগুলিতে / ইত্যাদি / বাশার্কে যেতে হবে Personal ব্যক্তিগত পরিবেশের ভেরিয়েবল এবং প্রারম্ভকালীন প্রোগ্রামগুলি ~ / .bash_profile এ যাওয়া উচিত Personal / ব্যক্তিগত। নাম এবং ফাংশনগুলি ~ / .bashrc এ চলে।"

সুতরাং আপনি যদি কোনও ব্যবহারকারী ভিত্তিতে পরিবেশের ভেরিয়েবল সেট করতে চান তবে এটি ব্যবহারকারীর .bash_profile ফাইলে করুন।

.bash_profileআমি পড়তে শিরোনাম :

"ব্যক্তিগত পরিবেশের ভেরিয়েবল এবং স্টার্টআপ প্রোগ্রামগুলি।

ব্যক্তিগত উপনাম এবং ফাংশনগুলি ~ / .bashrc এ যাওয়া উচিত। সিস্টেম ওয়াইড এনভায়রনমেন্ট ভেরিয়েবল এবং স্টার্টআপ প্রোগ্রামগুলি / ইত্যাদি / প্রোফাইলে রয়েছে। সিস্টেমের প্রশস্ত উপন্যাস এবং ফাংশনগুলি / ইত্যাদি / বাশার্কে রয়েছে are "

উপসংহার
আপনি যদি কেবল প্রোগ্রামগুলি রক্ষিত দেখতে রুট চান তবে উদাহরণস্বরূপ / sbinআমি এই পথটিকে রুটের .bash_profileফাইলটিতে যুক্ত করব। কিন্তু আপনি যদি দেখতে প্রত্যেক ব্যবহারকারীর চান কি রুট নির্দিষ্ট প্রোগ্রাম আপনার বক্স আমি রাখতেন ইনস্টল /sbinমধ্যে /etc/.profile। এখন প্রতিটি ব্যবহারকারী মূল নির্দিষ্ট প্রোগ্রামগুলি অনুসন্ধান করতে এবং প্রয়োজনে অধিকারগুলি উন্নত করতে ট্যাব সমাপ্তি ব্যবহার করতে পারে।

বিশেষ কেস: এসএসএইচ
যখন কমান্ডলাইন দিয়ে ssh শুরু করা হয়, তখন একটি ইন্টারেক্টিভ লগইন শেল শুরু হয়। তবে /etc/profileএক্ষেত্রে পড়া হয় না। যখন আমি .bash_profileপ্রতিটি ব্যবহারকারীর ফাইলে পরিবেশের পরিবর্তনগুলি সংজ্ঞায়িত করি তখন এটি ssh এর সাথে কাজ করে।


2

দু: খিত প্রশ্নের ভুল ব্যাখ্যা করেছেন নীচের অ্যাসোভারটি কোনও ব্যবহারকারীর প্রোফাইলে এটি কারও সাহায্য করার ক্ষেত্রে রেখে দিচ্ছে

.bash_profile পরিবর্তন করুন

nano ~/.bash_profile

তারপরে ফাইলের কোথাও আপনার পাথগুলি বিচ্ছিন্ন করে সংশোধন করুন:

 PATH=$PATH:$HOME/bin:/your/path
 export PATH

তারপরে আপনার প্রোফাইল পুনরায় লোড করুন

source ~/.bash_profile

অথবা লগআউট এবং আবার লগইন

যদি আপনি পথ চেক করেন তবে এতে আপনার নতুন যুক্ত হওয়া পাথ অন্তর্ভুক্ত করা উচিত

echo $PATH

1

আপনি একটি .rc ফাইলে পরিবেশের ভেরিয়েবল সেট করতে পারেন; বাশ শেলগুলির জন্য (আমি বিশ্বাস করি সবচেয়ে সাধারণ, এবং সেন্টোসে ডিফল্ট) প্রতিটি ব্যবহারকারীর তার হোম ডিরেক্টরিতে .bashrc নামে একটি ফাইল থাকে has

কোনও একটি নির্দিষ্ট ব্যবহারকারীর জন্য সেট করার জন্য এই ফাইলটিতে PATH = / usr / lib / রুবি-এন্টারপ্রাইজ / বিন: AT PATH কমান্ড যুক্ত করুন।

এটি সমস্ত ব্যবহারকারীর জন্য সেট করার জন্য (যেমন আপনি উল্লেখ করেছেন), এটিকে / etc / bashrc এ পরিবর্তন করুন (প্রতিটি ব্যবহারকারীর হোম ডিরেক্টরিতে ডিফল্ট .bashrc এ ফাইলটি উত্পন্ন করা উচিত, তবে আপনার এটি ডাবল চেক করা উচিত)।

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