$ BASH_ENV সাধারণত কোথায় সেট থাকে?


19

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

উভয় সার্ভারে / ইত্যাদি / প্রোফাইল এবং / ইত্যাদি / এনভায়রনমেন্ট ফাইলটি অভিন্ন, তবে $ BASH_ENV সঠিকভাবে কাজ করা সার্ভারে ~ / .bashrc সেট করা আছে। আমি যে সার্ভারটি কাজ করছে না তার উপর $ BASH_ENV সেট করতে চাই, তবে আমি এটি ওয়ার্কিং সার্ভারে সেট করা একই জায়গায় সেট করতে পছন্দ করব। লিনাক্স কোন ইন্টারেক্টিভ লগইন চলাকালীন কোন জায়গাগুলি চলবে, যেমন অন্য কম্পিউটারের এসএসএস কমান্ড?

সম্পাদনা: ব্যবহারকারীর জন্য / ইত্যাদি / পাসডাব্লুডির লাইনটি উভয় সার্ভারে / বিন / ব্যাশ নির্দিষ্ট করে। উভয় সার্ভারের জন্য ~ / .bash_profile ফাইলটি অভিন্ন এবং এতে রয়েছে if [ -f ~/.bashrc ]; then . ~/.bashrc; fi। সিস্টেমগুলির মধ্যে একমাত্র পার্থক্য হ'ল AS BASH_ENV যে সার্ভারে কাজ করছে না তার একটি নাল স্ট্রিং এবং এটি যে সার্ভারে কাজ করছে সেখানে এটি কোথায় সেট করা আছে তা আমি খুঁজে পাচ্ছি না।

সম্পাদনা 2: উভয় সার্ভারে ~ / .ssh / পরিবেশ ফাইলের BASH_ENV = ~ / .bashrc রয়েছে


1
উভয় সার্ভারে / ইত্যাদি / পাসডাব্লুড একই? যদি বাশকে "/ bin / bsh" এর পরিবর্তে "/ bin / sh" বলা হয় তবে এটি কোনও বাশার্ক ফাইল (কেবলমাত্র প্রোফাইল ফাইলগুলি) পড়বে না।
ফ্রেইহিট

অভিন্ন নয়, তবে আমি যে ব্যবহারকারীর কমান্ড প্রেরণ করছি তা উভয় সিস্টেমে / ইত্যাদি / পাসডাব্লুতে একই লাইন রয়েছে।
তুলসিল

এবং ~ /। প্রোফাইলে এবং b / .বাশ_ প্রোফাইল সম্পর্কে কী?
ফ্রেইহিট

তারা অভিন্ন এবং উভয় ধারণ করেif [ -f ~/.bashrc ]; then . ~/.bashrc; fi
তুলিল

আপনি যাচাই করেছেন যে / etc / bashrc এবং /etc/profile.d/* অভিন্ন? ~ / .bash_login? /etc/pam.d/*? /etc/security/pam_env.conf?
ফ্রেইহিট

উত্তর:


21

BASH_ENVশুধুমাত্র পরিবেশের মাধ্যমে সেট করা হতে পারে, বা আর একটি স্ক্রিপ্ট যা প্রাথমিককরণের সময় উত্সাহিত হয়। অ-ইন্টারেক্টিভ শেলের জন্য, এটি কেবলমাত্র অতিরিক্ত ফাইলগুলি উত্স করার চেষ্টা করবে যদি সেই শেলটিও লগইন শেল হয়। (এই ক্ষেত্রে এটি পড়বে ~/.bash_profile, ~/.bash_loginএবং ~/.profile... তবে এটি যদি এমনটি করত তবে আপনি কোনও সমস্যা সম্মুখীন হবেন না)

দেখার জন্য প্রথম স্থানটি সেই পরিবেশ যেখানে সাব-শেলটি চাওয়া হচ্ছে।

  • একটি রফতানি BASH_ENVভেরিয়েবল মাধ্যমে পাস করা হবে। মনে রাখবেন যে এটি কোনও উত্সযুক্ত ফাইলের মধ্যে সমাধিস্থ করা যেতে পারে।
  • স্ক্রিপ্টটি কল করে একই লাইনে প্যারামিটার হিসাবে খাওয়ানো যেতে পারে BASH_ENV=blah /path/to/somecommand.sh। এটি একটি কালশিটে আঙুলের মতো দাঁড়িয়ে আছে যাতে আপনি সম্ভবত এটি ধরতেন।

আপনি যদি লগ ইন করার পরে এটি সেট করা হচ্ছে তবে আপনি কোথায় তা অনুধাবন করতে পারবেন না, আপনাকে লগইন পরিবেশ নির্মানের জন্য কী দায়ী তা দেখার প্রয়োজন হতে পারে।

  • লগইন শেল দ্বারা উত্সাহিত হওয়া সমস্ত সাধারণ ফাইল। man bashসম্পূর্ণ তালিকা জন্য।

  • পিএএম : হিসাবে মন্তব্য, চেক প্রস্তাব freiheit /etc/security/pam_env.conf, এবং যে কোনো অতিরিক্ত ফাইল যে রেফারেন্সড হয় pam_env.so। অন্যান্য পিএএম মডিউলগুলিও দায়বদ্ধ হতে পারে, তবে আপনার প্যাম কনফিগারেশনগুলি দেখতে অভিন্ন দেখা গেলে সম্ভবত এটি ঘটবে না।

  • sshd : এটি নিম্নলিখিত ফাইলগুলিকে স্ক্যান করবে:

    • ~/.ssh/environment(হোম ডিরেক্টরিতে পরিবর্তন করার আগে; কেবল PermitUserEnvironmentসক্ষম থাকলেই sshd_config)
    • ~/.ssh/rc (হোম ডিরেক্টরিতে পরিবর্তন করার পরে; সর্বদা)
    • /etc/ssh/sshrc(যদি ~/.ssh/rcউপস্থিত না থাকে)

দ্রষ্টব্য: ব্যবহারকারীর অনুমোদিত কী ফাইলগুলিতে লাইনগুলির sshdজন্যও স্ক্যান করবে environment=value(যদি PermitUserEnvironmentসক্ষম করা থাকে) তবে ম্যান পৃষ্ঠা থেকে এটি স্পষ্ট নয় যে that ধাপটি উপরের অনুক্রমের মধ্যে পড়ে।


আমি একটি পার্থক্য খুঁজে! PermitUserEnvironment yesওয়ার্কিং সার্ভারে / etc / ssh / sshd_config এ সেট করা আছে তবে সমস্যাটি এক নয়। আমি এটি পরিবর্তন করেছি, তবে আমি কেবল একটি আদেশ পরীক্ষা করেছি এবং এটি আবার কার্যকর হয়নি। আমি যখন চেষ্টা করার চেষ্টা করলাম তখনই কি এই ফাইলটি বিশ্লেষণ হবে? আমি যে ব্যবহারকারীকে নিয়ে কাজ করছি তার জন্য আমার কাছে একটি ~ / .ssh / rc নেই এবং উভয় সিস্টেমে কোনও / etc / ssh / sshrc ফাইল নেই।
বেসিল

ওহ, আমি মনে করি এসএসএস পুনরায় পুনর্নিযুক্ত করা দরকার? /etc/init.d/sshd?
বেসিল

@ বাসিল হ্যাঁ, আপনাকে পুনরায় চালু করতে হবে sshd। এর অর্থ হ'ল কার্যকারী সার্ভারে এমন কোনও ফাইল থাকতে পারে ( sshdপরিবেশিত হচ্ছে যা আমি আপনাকে দিয়েছি তার তালিকা পরীক্ষা করুন )।
অ্যান্ড্রু বি

হ্যাঁ, হতাশাজনক অংশটি- আমার যা যা প্রয়োজন তা সবই .bashrc এ সেট করা আছে, যা কেবল চালানো হয়নি :) আপনার সহায়তার জন্য অনেক ধন্যবাদ- আমি এসএসএইচকে পুনরায় পুনঃনির্মাণ করার পরিবর্তনের সময়সূচি করছি এবং আমি ফিরে রিপোর্ট করব। আমি ধরে নিলাম এটি কাজ করবে
তুলসী

আমি স্রেফ এসএসএইচকে পুনরায়ায়ন করা শেষ করেছি এবং আমার অ-ইন্টারেক্টিভ এসএসএইচ কমান্ড এখন কাজ করছে! আপনার সহায়তার জন্য আপনাকে অনেক ধন্যবাদ, আমি কখনও নিজের মতো ক্ষেত্রটি খুঁজে পেতাম না।
তুলসী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.