2012-08-29 19 views
6

बदलती है तो एक बैश वैरिएबल सेट करें, मैं एक वैरिएबल को pwd के समान अपने बैश खोल को उपलब्ध करना चाहता हूं लेकिन पूरे पथ की बजाय मौजूदा कार्यशील निर्देशिका के एक खंड के बराबर है।प्रत्येक बार जब निर्देशिका

अर्थात,

$PWD=/a/b/c/d/e/f 
$PATH_SECT=c/d/e 

मैं एक शीघ्र कि पहले से ही इस मार्ग को प्रदर्शित करता है है, लेकिन मैं इस मूल्य पर हर बार मैं निर्देशिका बदलने के वातावरण में एक चर का अद्यतन करना चाहते हैं।

मैं यह कैसे कर सकता हूं?

+0

आप केवल अपने बैश शीघ्र के लिए या में इसका इस्तेमाल करने के लिए इस वातावरण चर की आवश्यकता है अपने आदेश भी? – jolivier

+0

मैं चर का उपयोग कर खोल में आदेश चलाने में सक्षम होना चाहता हूँ। – Tom

उत्तर

5

आप promptcmd फ़ंक्शन का उपयोग कर सकते हैं। man bash से हम सीखते हैं कि यह फ़ंक्शन प्रॉम्प्ट दिखाने से ठीक पहले निष्पादित किया गया है। यह डिफ़ॉल्ट रूप से खाली है (या बल्कि, परिभाषित नहीं)।

एक साधारण उदाहरण:

promptcmd(){ 
    local p=$(pwd) 
    PATH_SECT=${p/\/a\/b\/} 
} 
1

आप एक alias और में एक समारोह का उपयोग कर सकते अपने .bashrc:

alias cd="supercd" # call the function 
function supercd(){ 
    builtin cd "[email protected]" # original cd 
    PATH_SECT=$(pwd) # or whatever 
}