2008-09-18 16 views
61

मुझे पता है कि मुझे पता है कि यह कैसे करना है लेकिन ... यूनिक्स में लॉगिन पर आप एक स्क्रिप्ट (बैश ठीक है) कैसे चलाते हैं?* nix में लॉगिन पर आप एक स्क्रिप्ट कैसे चलाते हैं?

+1

क्या लॉगिन? यूआई लॉगिन? gnome, जीटीके, एकता की तरह? शायद टीटी से एक नया खोल लॉगिन? उनके बीच क्या अंतर है? –

उत्तर

102

wikipedia Bash

जब बैश शुरू होता है से है, यह की एक किस्म में आदेशों को निष्पादित करता है अलग स्क्रिप्ट्स।

बैश एक इंटरैक्टिव लॉगिन शेल के रूप में लागू किया जाता है, यह पहली बार पढ़ता है और /etc/प्रोफ़ाइल फ़ाइल से आदेश निष्पादित करता है, अगर कि फ़ाइल मौजूद है। कि फ़ाइल को पढ़ने के बाद, यह ~/.bash_profile, ~/.bash_login, और ~/.profile के लिए लग रहा है, इसी क्रम में, और पढ़ता है और पहले एक है कि मौजूद है और पठनीय है से आदेश निष्पादित करता है।

जब कोई लॉगिन खोल निकलता है, तो बैश पढ़ता है और फ़ाइल ~/.bash_logout से कमांड निष्पादित करता है, यदि यह मौजूद है।

जब एक इंटरैक्टिव खोल कि एक लॉगिन खोल शुरू कर दिया है नहीं है, बैश पढ़ता है और अगर कि फ़ाइल मौजूद है ~/.bashrc, से आदेश निष्पादित करता है। यह हो सकता है --norc विकल्प का उपयोग करके अवरुद्ध। --rcfile फ़ाइल विकल्प बाश को ~/.bashrc के बजाय फ़ाइल से कमांड को पढ़ने और निष्पादित करने के लिए मजबूर करेगा।

0

स्क्रिप्ट ~/.bash_profile लॉगिन पर चलाया जाता है।

2

आप पर OSX हैं, तो यह ~/.profile

+1

बैश के साथ ओएस एक्स पर, ~/.bash_profile ठीक काम करता है। –

+2

हां, लेकिन ~/.profile पहले से मौजूद है। –

8

बैश उपयोग करते समय, ~/.bash_profile, ~/.bash_login और ~/.profile के पहले एक इंटरैक्टिव लॉगिन खोल के लिए चलाया जाएगा। मेरा मानना ​​है कि ~/.profile आम तौर पर बैश के अलावा यूनिक्स शैल द्वारा चलाया जाता है। गैर-लॉगिन इंटरैक्टिव शैल के लिए बैश ~/.bashrc चलाएगा।

मैं आम तौर पर सब कुछ डाल मैं हमेशा .bashrc में स्थापित करने के लिए और फिर .bash_profile, जहां मैं भी कुछ चीजें हैं जो केवल चलाना चाहिए जब मैं इस तरह के ssh-agent तक का गठन screen चल के रूप में लॉगिन कर रहा हूं, की स्थापना से चलाने चाहते हैं।

3

आप एक स्क्रिप्ट और केवल एक स्क्रिप्ट चलाने के लिए चाहते हैं, तो आप यह है कि उपयोगकर्ताओं को डिफ़ॉल्ट खोल कर सकते हैं।

echo "/usr/bin/uptime" >> /etc/shells 
vim /etc/passwd 
    * username:x:uid:grp:message:homedir:/usr/bin/uptime 

रोचक प्रभाव :) हो सकता है (अपने सुरक्षित नहीं यद्यपि, तो यह बहुत ज्यादा भरोसा नहीं है। एक स्क्रिप्ट है कि अपने ड्राइव मिटा होने के लिए अपने डिफ़ॉल्ट खोल स्थापित करने जैसा कुछ भी नहीं। ... हालांकि, .. मैं एक परिदृश्य की कल्पना कर सकता हूं जहां यह आश्चर्यजनक रूप से उपयोगी हो सकता है)

1

/etc/profile में एक प्रविष्टि जोड़ें जो स्क्रिप्ट निष्पादित करता है। यह प्रत्येक लॉग-ऑन के दौरान चलाया जाएगा। यदि आप केवल अपने खाते के लिए ऐसा कर रहे हैं, तो इसे चलाने के लिए अपनी लॉगिन स्क्रिप्ट्स (उदा। .bash_profile) का उपयोग करें।

26

लॉगिन पर, अधिकांश गोले एक लॉगिन स्क्रिप्ट निष्पादित करते हैं, जिसका उपयोग आप अपनी कस्टम स्क्रिप्ट निष्पादित करने के लिए कर सकते हैं। लॉगिन स्क्रिप्ट खोल निष्पादित करता है निश्चित रूप से निर्भर करता है,, खोल पर:

  • बैश: .bash_profile, .bash_login, .profile (पीछे की ओर compabitibility के लिए)
  • श: .profile
  • tcsh और csh: .login
  • zsh:

.zshrc आप शायद तुम क्या

echo $SHELL 
करके उपयोग कर रहे हैं खोल पता कर सकते हैं प्रॉम्प्ट से

+1

echo $ 0 को प्रकट करना चाहिए कि कौन सा खोल उपयोग किया जा रहा है, हालांकि कभी-कभी मैंने 'sh' को देखा है, जब यह वास्तव में 'ksh' है - एचपी-यूएक्स या सोलारिस I पर लगता है। –

0

स्टार्टअप पर फ़ाइल को पढ़ने के लिए जानकारी के लिए^INVOCATION के लिए अपने स्थानीय सिस्टम के बैश मैन पेज को खोजें।

man bash 
/^INVOCATION 
फ़ाइलें खंड में

इसके अलावा,

~/.bash_profile 
      The personal initialization file, executed for login shells 
    ~/.bashrc 
      The individual per-interactive-shell startup file 

उचित फाइल करने के लिए अपनी स्क्रिप्ट जोड़ें। सुनिश्चित करें कि स्क्रिप्ट $ PATH में है, या स्क्रिप्ट फ़ाइल के पूर्ण पथ का उपयोग करें।

2

Launchd एक ओएस एक्स में पसंद रास्ता

आप इसे अपने प्रवेश पर चलाना चाहते हैं ~/Library/LaunchAgents

में रख प्रारंभ launchd आइटम

launchctl load /Library/LaunchDaemons/com.bob.plist 

बंद करो आइटम

है
launchctl unload /Library/LaunchDaemons/com.bob.plist 

उदाहरण com.bob.plist

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>Label</key> 
<string>com.bob</string> 
<key>RunAtLoad</key> 
<true/> 
<key>ProgramArguments</key> 
<array> 
<string>/usr/bin/java</string> 
<string>-jar</string> 
<string>/Users/user/program.jar</string> 
</array> 
</dict> 
</plist> 
2

मैं इस समस्या से दिनों से निराश था। उबंटू पर कुछ भी काम नहीं किया। अगर मैं/etc/profile में कॉल डालता हूं तो यह सब लॉग इन प्रयास पर दुर्घटनाग्रस्त हो जाता है। मैं "स्टार्टअप एप्लीकेशन" का उपयोग नहीं कर सका क्योंकि यह वही नहीं था जो मैं चाहता था। यह केवल उस वर्तमान उपयोगकर्ता के लिए स्क्रिप्ट सेट करता है। http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html

समाधान होगा::

  1. पता लगाना $ XDG_CONFIG_DIRS पथ:

    गूंज $ XDG_CONFIG_DIRS

  2. अपनी स्क्रिप्ट डाल

    अंत में मैं इस छोटे से लेख मिला उस निर्देशिका में

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