আমি লক্ষ্য করেছি যে আমি যখন 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
এসএসএসকে তাদের পরিবহন হিসাবে ব্যবহার করে সমস্ত সরঞ্জামকে ভেঙে ফেলতে পারে।