2011-01-03 21 views
11

के साथ जारी रखें मैं pagsh के लिए उपनाम बनाना चाहता हूं जो तुरंत मुझे व्यवस्थापक केर्बेरोज टिकट प्राप्त करेगा।बैश, आदेश निष्पादित करें लेकिन इंटरैक्टिव सत्र

समस्या यह है कि मैं यह नहीं समझ सकता कि bash के लिए आदेश निर्दिष्ट करने के लिए कैसे आदेश दिया गया है, लेकिन आदेश के बाद भी इंटरैक्टिव सत्र के साथ जारी रखें।

मेरे वर्तमान शॉट है:

alias admin=pagsh -c "bash -c \"kinit [email protected]\"" 

लेकिन bash तार्किक समाप्त होता है सही होने के बाद kinit किया जाता है। मैं बैश के एक इंटरैक्टिव सत्र की भिक्षा में एक कस्टम कमांड कैसे दबा सकता हूं? मैं अभी भी सामान्य रूप से .bashrc चलाने की आवश्यकता इसलिए मुझे लगता है कि अपने .bashrc, पूर्व सूत्रों --rcfile

उत्तर

10

मेरी सलाह फ़ाइल bashrc एक कस्टम का उपयोग करेंगे उपयोग नहीं कर सकते --rcfile साथ:

alias admin=pagsh -c "bash --rcfile myrc"

myrc:

source ~/.bashrc 
kinit [email protected] 
+1

ओह मैं बहुत मूर्ख हूँ :- डी यह एक उत्कृष्ट विचार है। –

+0

खुशी मैं मदद कर सकता हूं :) – OneOfOne

+0

मुझे लगता है कि इसे 'alias admin = pagsh -c" bash --rcfile myrc "' यानी पढ़ना चाहिए। bashrc –

1

निम्नलिखित के बारे में क्या?

alias admin='pagsh -c "bash -c \"kinit [email protected]; exec bash\""' 

या यहाँ तक कि

alias admin='pagsh -c "kinit [email protected]; exec bash"' 

काम हो सकता है। (मेरे पास ठीक से परीक्षण करने के लिए खुले खुले वातावरण नहीं हैं।)

2

यदि आपको केवल एक पंक्ति या दो की आवश्यकता है, तो आप इसे "प्रक्रिया प्रतिस्थापन" [1] की ठंडी बैश सुविधा का उपयोग कर सकते हैं ताकि इसे सही प्रदान किया जा सके। आविष्कार रेखा। जैसे (एक विशिष्ट अजगर virtualenv में एक पार्टी को चलाने के लिए):

bash --rcfile <(echo '. ./pyvenv/bin/activate') 

कई पंक्तियों एक समस्या नहीं हैं, न ही वार्स या सहायकों उपयोग कर रहा है:

bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME) 

[1] man bash और "प्रक्रिया प्रतिस्थापन के लिए देखो "। ध्यान दें कि यह सभी सिस्टम पर समर्थित नहीं है, लेकिन यह सभी लिनक्स पर काम करना चाहिए।

संबंधित मुद्दे