প্রশ্ন CentOS মধ্যে $ PATH একটি ডিরেক্টরি যোগ করা?


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

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

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

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

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


68
2018-01-15 03:15


উত্স




উত্তর:


এটি সম্পাদনা করার জন্য একটি ভাল ধারণা নয় /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 পরিবর্তনশীল।


101
2017-08-22 16:29



~/.profile এছাড়াও অন্য বৈধ বিকল্প - Zypher
হ্যাঁ, একক ব্যবহারকারীর জন্য। কিন্তু প্রশ্নটি প্যাথ পরিবর্তনের বিষয়ে ছিল সব ব্যবহারকারীদের। - Mike
@ মাইক এই পাথমুঞ্জ কমান্ড কি? - Nickolai Leschov
@ নিকোলাইলেস্কভভ আমি নিশ্চিত যে এটি মাত্র $ PATH এর পথ যুক্ত করেছে। - Mike
@ নিকোলাইলেস্কোভ এটি একটি ফাংশন যা / etc / profile এ সংজ্ঞায়িত করা হয়েছে - CrazyPheel


Fmonk এর পরামর্শ অনুসরণ করার পর আমি চেক আউট /etc/bashrc, যেখানে আমি লক্ষ্য করেছি যে "পরিবেশ উপাদানগুলি / etc / profile এ চলে যায়।" আমি দেখতে লাগলাম /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 যদি বিবৃতি নীচে। এই আমার সমস্যা সমাধান।


9
2018-01-15 04:10



কেউ কি ব্যাখ্যা করতে পারে "$EUID" = "0" এই প্রসঙ্গে মানে? - Eli
EUID 0 ব্যবহারকারীর রুট মানে। - bbaja42
আপনি /etc/profile.d ব্যবহার করা উচিত। নিচে আমার উত্তর দেখুন। - Mike
@ মাইককনিগ্লিওরো উত্তরটি সঠিক হিসাবে গ্রহণ করার কথা বিবেচনা করুন। তার উপায় সঠিক এক। এটা যে ভাবে কাজ উন্নত করা হয়। ফাইল তাকান /etc/profile.d/ ফোল্ডার এবং আপনি এটা লক্ষ্য করবেন। এছাড়াও, তিনি বলেন, একটি সিস্টেম আপডেট আপনার সমাধান পূর্বাবস্থায় ফিরিয়ে আনতে পারে। - Caio Cunha


"একটি ইন্টারেক্টিভ লগইন শেল শুরু হয়   একটি সফল লগইন পরে, ব্যবহার করে   / bin / login, / etc / passwd পড়ার মাধ্যমে   ফাইল। সাধারণত এই শেল আহ্বান   / etc / প্রোফাইল এবং তার ব্যক্তিগত সার্চ   সমতুল্য ~ / .bash_profile উপর   প্রারম্ভকালে।

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

তাই আমি bashrc এ পরিবেশ ভেরিয়েবলগুলি স্থাপন করব না, কারণ এটি শুধুমাত্র সাধারণ প্রচলনের বিরুদ্ধে নয়, তবে গ্রাফিকাল ডেস্কটপ এনভায়রনমেন্ট থেকে একটি টার্মিনাল চালু করার সময় আপনি আপনার bashrc varialbles মিস করবেন।

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

"সিস্টেম ওয়াইড alias এবং ফাংশন / etc / bashrc ব্যক্তিগত করা উচিত। ব্যক্তিগত   পরিবেশ ভেরিয়েবল এবং স্টার্টআপ প্রোগ্রাম মধ্যে যেতে হবে   ~ / .Bash_profile। ব্যক্তিগত aliases এবং ফাংশন মধ্যে যেতে হবে   ~ / .Bashrc। "

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

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

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

ব্যক্তিগত aliases এবং ফাংশন ~ /। Bashrc মধ্যে যেতে হবে। সিস্টেম প্রশস্ত   পরিবেশ ভেরিয়েবল এবং স্টার্টআপ প্রোগ্রাম / etc / profile হয়।   সিস্টেম ওয়াইড alias এবং ফাংশন / etc / bashrc হয়। "

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

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


3
2017-11-08 21:34





SORRY প্রশ্ন misinterpretttted নিম্নলিখিত asnwer একটি ব্যবহারকারীর প্রফাইল জন্য হয় এটা কাউকে সাহায্য করে যদি এটা ছেড়ে

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

nano ~/.bash_profile

তারপরে ফাইলটিতে কোথাও পৃথক করে আপনার পথগুলি যুক্ত / সংশোধন করুন:

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

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

source ~/.bash_profile

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

যদি আপনি PATH পরীক্ষা করে থাকেন তবে এটি আপনার নতুন যোগ করা পাথ অন্তর্ভুক্ত করা উচিত

echo $PATH

1
2017-10-31 08:53





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

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

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


0
2018-01-15 03:49