একটি লগইন শেল প্রথমে পড়ে /etc/profile
এবং তারপরে ~/.bash_profile
।
একটি অ-লগইন শেল /etc/bash.bashrc
এবং এর পরে পড়ে ~/.bashrc
।
কেন এটি গুরুত্বপূর্ণ?
এই লাইনের কারণে man ssh
:
যদি কমান্ডটি নির্দিষ্ট করা থাকে তবে এটি লগইন শেলের পরিবর্তে দূরবর্তী হোস্টে সম্পাদন করা হয়।
অন্য কথায়, যদি ssh কমান্ডের কেবল অপশন থাকে (কমান্ড নয়), যেমন:
ssh user@host
এটি একটি লগইন শেল শুরু করবে, একটি লগইন শেল পড়বে ~/.bash_profile
।
একটি ssh কমান্ডের একটি কমান্ড রয়েছে যেমন:
ssh user@host :
কমান্ডটি যেখানে :
(বা কিছুই করবেন না)।
এটি কোনও লগইন শেল শুরু করবে না , তাই ~/.bashrc
পড়তে হবে।
রিমোট স্টিডিন
রিমোট কম্পিউটারে / dev / stdin এর সরবরাহকৃত টিটিআই সংযোগটি প্রকৃত tty বা অন্য কিছু হতে পারে।
এর জন্য:
$ ssh sorontar@localhost
/etc/profile sourced
$ ls -la /dev/stdin
lrwxrwxrwx 1 root root 15 Dec 24 03:35 /dev/stdin -> /proc/self/fd/0
$ ls -la /proc/self/fd/0
lrwx------ 1 sorontar sorontar 64 Dec 24 19:34 /proc/self/fd/0 -> /dev/pts/3
$ ls -la /dev/pts/3
crw--w---- 1 sorontar tty 136, 3 Dec 24 19:35 /dev/pts/3
যা কোনও টিটিওয়াইতে শেষ হয় (কোনও নেটওয়ার্ক সংযোগ নয়) শুরু হওয়া বাশ এটি দেখায়।
কমান্ডের সাথে ssh সংযোগের জন্য:
$ ssh sorontar@localhost 'ls -la /dev/stdin'
sorontar@localhost's password:
lrwxrwxrwx 1 root root 15 Dec 24 03:35 /dev/stdin -> /proc/self/fd/0
টিটিওয়াইয়ের তালিকাটি একই শুরু হয় তবে নোট করুন / ইত্যাদি / প্রোফাইল উত্সাহিত হয়নি।
$ ssh sorontar@localhost 'ls -la /proc/self/fd/0'
sorontar@localhost's password:
lr-x------ 1 sorontar sorontar 64 Dec 24 19:39 /proc/self/fd/0 -> pipe:[6579259]
যা শেলকে বলে যে সংযোগটি একটি পাইপ (কোনও নেটওয়ার্ক সংযোগ নয়)।
সুতরাং, উভয় পরীক্ষার ক্ষেত্রে, শেলটি জানতে সক্ষম হয় না যে সংযোগটি একটি নেটওয়ার্ক থেকে এবং সুতরাং এটি পড়তে পারে না ~/.bashrc
(যদি আমরা কেবল কোনও নেটওয়ার্কের সাথে সংযোগ সম্পর্কে কথা বলি)। এটি ~ / .bashrc পড়তে পারে তবে ভিন্ন কারণে।