हर बैश कमांड के बाद स्क्रिप्ट कैसे कॉल करें


22

क्या hey.shप्रत्येक बैश कमांड के नाम पर इस उदाहरण में एक स्क्रिप्ट को कॉल करना संभव है ?

उदाहरण के लिए आप lsहिट एंट्री करते हैं और ls रन बनाते हैं, फिर hey.shदौड़ेंगे।

फिर आप टाइप करें cd .. (या कोई अन्य कमांड) , cd रन तब रन hey.shहोगा, और इसी तरह।


2
यह या तो एक XY समस्या है या एक बहुत ही अजीब विचार है; क्या आप वास्तव में हासिल करने की कोशिश कर रहे हैं?
jasonwryan

उर्फ bash.rc में हो सकता है?
चाँदबट्ट --४

जवाबों:


29
PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND यदि सेट किया जाता है, तो मान को प्रत्येक प्राथमिक संकेत जारी करने से पहले एक कमांड के रूप में निष्पादित किया जाता है।


नोट: पर्यावरण चर बनाम शेल चर

डिफ़ॉल्ट रूप से, PROMPT_COMMANDहै एक वातावरण चर । यह सिर्फ एक शेल वेरिएबल है

दोनों प्रकार के चर एक ही तरह से पहुँचाए जाते हैं ( "$variable*"), लेकिन पर्यावरण चर बच्चे प्रक्रियाओं द्वारा विरासत में मिले हैं जबकि शेल चर नहीं हैं।

सम्मेलन पर्यावरण चर + शेल चर को कैपिटल करने के लिए है जो आपके शेल को कॉन्फ़िगर करता है (PROMPT_COMMAND आपके शेल को कॉन्फ़िगर करता है), लेकिन अन्य प्रकार के चर कम मामले रखें।

में bash , तो आप कर सकते हैं: declare -pपता लगाने के लिए एक चर का निर्यात किया है कि क्या है (= है एक वातावरण चर) या नहीं:

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable

2
@ जॉन नंबर नहीं export । बस इसे सेट करें (या इसके लिए संलग्न करें, उदाहरण के लिए, जैसा कि ऊपर दिखाया गया है)।
PSkocik

नीट, हालांकि के बारे में क्या?
चंदबत्तपुरा

2
@ Moonbutt74 हर कमांड से पहले == हर कमांड के बाद + अपने बैश सेशन की शुरुआत में
PSkocik

@ पीएसकोकिक मुझे मिल गया मैं बस उत्सुक था अगर वह पहले से ही एक पर्यावरण चर था, एक त्वरित गूंज कमांड पर मुझे पता चला कि यह था। यह वही है जो मैं देख रहा था
जॉन

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