আমি লক্ষ্য করেছি যে আমি যখন ssh <host> <command>সিনট্যাক্স ব্যবহার করে সরাসরি কোনও এসএসএইচ হোস্টে একটি কমান্ড চালাই, তখন আমি আউটপুট দেখতে পাই .bashrcতবে .bash_profile(বা .profile) এর আউটপুট নয় ।
উদাহরণস্বরূপ, আমি যদি উভয় ফাইলের উপরে নীচের কমান্ডটি রাখি,
echo ${BASH_SOURCE[0]}
এবং ম্যানুয়ালি উত্স .bash_profile(যা উত্সে উত্সগুলি .bashrc), আমি দেখব
$ . .bash_profile
.bash_profile
.bashrc
ssh <host>কমান্ডের ফর্মটি ব্যবহার করে, আমি যদি এসএসএইচ এর মাধ্যমে এই কম্পিউটারে দূরবর্তীভাবে লগ ইন করে দেখি তবে এটি একই আউটপুট । (এবং আমি যদি .bash_profileঅস্থায়ীভাবে অন্য কোথাও স্টো করি তবে এই লাইনগুলির কোনওটিই প্রতিধ্বনিত হয় না।)
যাইহোক, যদি আমি ssh <host> <command>রূপের সাথে প্রত্যন্ত মেশিনে সরাসরি একটি কমান্ড কার্যকর করি তবে sshআউটপুটটি এরকম দেখাচ্ছে:
$ ssh <host> echo foo
/home/rlue/.bashrc
foo
আমার বোঝার মধ্যে পার্থক্য হল .bash_profileএবং এর মধ্যে পার্থক্যটি .bashrcহ'ল পূর্ববর্তীটি লগইন শেলগুলির জন্য হয় যখন উত্তরোত্তর ইন্টারেক্টিভ, অ লগইন শেলগুলির জন্য ।
আমি নিম্নলিখিতটি শেষ করেছি:
ssh <host>উত্স শুধুমাত্র.bash_profile, যখনssh <host> <command>উত্স শুধুমাত্র.bashrc, যার অর্থ- পূর্ববর্তীটি লগইন শেল এবং পরেরটি হয় না।
এই সিদ্ধান্তগুলি কি সঠিক? কেন ssh <host> <command>একটি ইন্টারেক্টিভ, লগ-ইন শেল হিসাবে বিবেচনা করা হয়? কমান্ডটি কার্যকর করতে এসএসএইচ এখনও রিমোট মেশিনে লগইন করছে না?
.bashrcএকটি ত্রুটি ছুড়েছিল, একই ধরণের লাইনগুলি .bash_profileছিল না। আপত্তিজনক লাইনগুলি ঠিক করার আগে আমি তাত্পর্যটি অনুসন্ধানের সুযোগ নিয়েছি।
.bashrc? এই ফাইলটি কোনও আউটপুট উত্পাদন করার কথা নয়। এর যে কোনও আউটপুট.bashrcএসএসএসকে তাদের পরিবহন হিসাবে ব্যবহার করে সমস্ত সরঞ্জামকে ভেঙে ফেলতে পারে।