यदि आपका sshd उपयोगी चर प्रदान नहीं कर रहा है, तो आप उपयोग कर सकते हैं
ps -p $PPID
या कुछ अन्य यादृच्छिक पीएस ट्रिक (यदि आपका शेल सेट नहीं होता है $PPID
) तो यह देखने के लिए कि शेल की मूल प्रक्रिया आपकी रिमोट-लॉगिन-प्रक्रिया है या नहीं। फिर अगर पेरेंट-इज़-रिमोट-थेली स्विच $ पीएस 1 है। और फिर OpenSSH डाउनलोड करें और geekosaur / Caleb के सुझावों का उपयोग करें क्योंकि आपका ssh सर्वर जंक है। ;)
या, आप "मैं कौन हूं" के आउटपुट का उपयोग कर सकता हूं, अंतिम फ़ील्ड (यानी, $( who am i | awk '$0=$NF')
) को पकड़ सकता हूं , और यह देखने के लिए जांचें कि क्या होस्ट दूरस्थ या स्थानीय है या नहीं, यह तय करने के लिए कि क्या आप स्थानीय या दूरस्थ रूप से लॉग इन हुए हैं।
या आप $(hostname)
अपने शेल को विशिष्ट होस्ट पर उपयुक्त $ PS1 का उपयोग करने के लिए आउटपुट पर स्विच कर सकते हैं ।
या, चलो वास्तव में पागल हो जाते हैं। यदि आप एक आधुनिक शेल का उपयोग कर रहे हैं - जैसे बैश, ksh93, या zsh, तो आप इस तथ्य का लाभ उठा सकते हैं कि निष्पादन पर $ PS1 का पुनर्मूल्यांकन किया जाता है। तो, यदि आप अपने cwd रिपॉजिटरी के भीतर है, और बाहर कुछ और है पागल पागल सामान करने के लिए एक इनलाइन सशर्त ब्लॉक शामिल कर सकते हैं। उदाहरण के लिए, यहां मैं [[ conditional ]] && $( echo "whatever it should be if true) || $( echo "whatever should be the if-not-true prompt" )
मूल रूप से उपयोग कर रही निर्देशिका के आधार पर अपना त्वरित परिवर्तन कर रहा हूं ।
default prompt$ PS1='$(id -un) @ $(hostname)$( [[ $(pwd) = /tmp ]] && echo " [I am in /tmp]" || echo " /not/in/tmp")$ '
myname @ host /not/in/tmp$ cd /tmp
myname @ host [I am in /tmp]$ cd /etc
myname @ host /not/in/tmp$
निश्चित रूप से, $ PS1 की परिभाषा आपके प्रोफ़ाइल में पागल दिखेगी, लेकिन आप तब केवल सुपर-रंगीन-गिट-सामान प्राप्त करते हैं जब आप वास्तव में गिट रिपॉजिटरी में होते हैं, जबकि आप कहीं और नियमित रूप से रंग देते हैं। :) ध्यान दें कि आपको PS1 असाइनमेंट के आसपास सिंगल कोट्स का उपयोग करना है। जब PS1 को असाइन किया गया हो तो आप वैरिएबल का विस्तार नहीं चाहते हैं; जब $ PS1 का मूल्यांकन बाद में किया जाता है तो आप उन्हें विस्तारित करना चाहते हैं। तो, एकल-उद्धरण।