मैं किस खोल पर चल रहा हूँ?


39

जब मैं रन echo $SHELLकरता हूं तो आउटपुट कहता है /bin/tcshजिसका मतलब है कि मैं एक tcshशेल चला रहा हूं । लेकिन उदाहरण के लिए जब मैं निम्नलिखित आदेश जारी करता हूं

alias emacs 'emacs -nw' 

मुझे निम्नलिखित त्रुटि मिलती है:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

और जब मैं जारी alias emacs="emacs -nw"करता हूं तो यह ठीक चलता है!

यह भ्रामक है क्योंकि मैं भाग रहा हूं, tcshलेकिन आदेशों की व्याख्या की जाती है bash

क्या कारण हो सकता है?


tcsh/cshइसका मौजूदा खोल है$shell
हाँगबोझू

जवाबों:


48

$SHELLयह जरूरी नहीं कि आपका वर्तमान शेल है, यह डिफ़ॉल्ट लॉगिन शेल है । आपके द्वारा उपयोग किए जा रहे शेल की जांच करने के लिए, प्रयास करें

ps $$

यह psBSD सिंटैक्स का समर्थन करने वाले सबसे हाल के यूनिक्स / लिनक्स पर काम करना चाहिए । अन्यथा, यह पोर्टेबल (POSIX) तरीका है

ps -p $$

यदि आप दौड़ रहे हैं तो कुछ इस तरह वापस आना चाहिए tcsh:

8773 pts/10   00:00:00 tcsh

यदि आप tcshअपना डिफ़ॉल्ट शेल होना चाहते हैं, तो chshइसे सेट करने के लिए उपयोग करें।


क्या आप जानते हैं कि मैं कैसे जांच सकता हूं कि कौन सी कॉन्फिग फाइल लोड की गई है? (कौन सा
बैशकेन

@ कॉफ़ी_मुझे यकीन नहीं है कि आपका क्या मतलब है। आप डिफ़ॉल्ट शेल को सेट कर सकते हैं chsh, .bashrcकेवल तभी पढ़ा जाएगा जब आप i) बश चला रहे हों और ii) इसे इंटरएक्टिव, नॉन-लॉगिन शेल के रूप में चला रहे हों। आप इस मशीन में कैसे प्रवेश कर रहे हैं?
terdon

मेरे पास एक स्क्रिप्ट है जो इस बैश शेल को tcsh शेल से शुरू करती है।
कॉफमेग

4
क्यों नहींps $$
cjm

1
@cjm वास्तव में क्यों नहीं, संपादित जवाब।
terdon

8

कमांड लाइन से, आप $0चर का उपयोग यह निर्धारित करने के लिए भी कर सकते हैं कि आप किस शेल का उपयोग कर रहे हैं। उदाहरण के लिए:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

नोट: आप किसी स्क्रिप्ट के भीतर $ 0 का उपयोग करके शेल को निर्धारित नहीं कर सकते, क्योंकि $ 0 स्क्रिप्ट ही होगी।


1

यह लिनक्स के लिए काम करता है:

lsof -a -p $$ -d txt

या, यदि आपको एक मजबूत चयन (अधिक सिस्टम) की आवश्यकता है:

lsof -a +D /bin +D /usr/bin -p $$ -d txt

1

यह उपरोक्त सभी बेहतर उत्तरों में संशोधन है। मेरे पास एक बिंदु पर डैश की पहचान करने वाला एक छोटा मुद्दा था; साझा करना सही लग रहा था:

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

तंग स्थानों में समस्या निवारण के लिए अच्छा है। चीयर्स।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.