2011-02-17 7 views
13

जब भी मैं बैश सत्र बंद करता हूं, मैं एक स्क्रिप्ट चलाने के लिए चाहता हूं।बैश से पहले स्क्रिप्ट चलाएं

मैं एक्सएफसीई और टर्मिनल 0.4.5 (एक्सएफसी टर्मिनल एमुलेटर) का उपयोग करता हूं, जब भी मैं अंतिम टर्म (जब मैं टर्मिनल बंद करता हूं) सहित टर्मिनल में एक टैब बंद करता हूं, तो मैं एक स्क्रिप्ट चलाने के लिए चाहता हूं।

कुछ .bashrc की तरह कुछ लेकिन प्रत्येक सत्र के अंत में चल रहा है।

.bash_logout

उत्तर

14

आप trap का उपयोग करें (man bash देखें):

trap /u1/myuser/on_exit_script.sh EXIT 

आदेश में जोड़ा जा सकता अपने .profile/.login

यह काम करता है कि क्या आप टर्मिनल को मारने के सामान्य रूप से खोल से बाहर निकलें (जैसे के माध्यम से exit आदेश) या बस खिड़की/टैब, क्योंकि खोल EXIT सिग्नल किसी भी तरह से मिलता है - मैंने बस अपनी पुट्टी विंडो से बाहर निकलने का परीक्षण किया।

0

काम नहीं करता है तो आप 'प्रस्थान' के साथ अपने सत्र बंद करते हैं, alias endbash="./runscript;exit" और endbash दर्ज करके बाहर निकलने की तरह कुछ करने में सक्षम हो सकता है। मुझे पूरा यकीन नहीं है कि यह काम करता है, क्योंकि मैं इस समय विंडोज़ चला रहा हूं।

संपादित करें: डीवीके का एक बेहतर जवाब है।

0

आपको "~/.bash_logout" में स्क्रिप्ट लिखें। यह बैश (1) द्वारा निष्पादित किया जाता है जब लॉगिन खोल निकलता है।

+0

ध्यान दें कि यह केवल काम करता है बैश एक लॉगिन खोल, उदा मार डाला गया है:

$ man bash [...] trap [-lp] [[arg] sigspec ...] The command arg is to be read and executed when the shell receives signal(s) sigspec. [...] If a sigspec is EXIT (0) the command arg is executed on exit from the shell. 

तो, आप अपने .bashrc कुछ निम्न कोड की तरह करने के लिए जोड़ सकते हैं यदि आप एसएसएच के माध्यम से लॉगिन करते हैं या gnome-terminal की प्रोफाइल प्राथमिकताओं में "लॉगिन शेल के रूप में चलाएं" चेक करें। – Splitlocked

4

मेरा उत्तर DVK's answer जैसा है लेकिन आपको एक कमांड या फ़ंक्शन का उपयोग करना है, फ़ाइल नहीं।

finish() { 
    # Your code here 
} 

trap finish EXIT