मुझे पता है कि मुझे पता है कि यह कैसे करना है लेकिन ... यूनिक्स में लॉगिन पर आप एक स्क्रिप्ट (बैश ठीक है) कैसे चलाते हैं?* nix में लॉगिन पर आप एक स्क्रिप्ट कैसे चलाते हैं?
उत्तर
जब बैश शुरू होता है से है, यह की एक किस्म में आदेशों को निष्पादित करता है अलग स्क्रिप्ट्स।
बैश एक इंटरैक्टिव लॉगिन शेल के रूप में लागू किया जाता है, यह पहली बार पढ़ता है और /etc/प्रोफ़ाइल फ़ाइल से आदेश निष्पादित करता है, अगर कि फ़ाइल मौजूद है। कि फ़ाइल को पढ़ने के बाद, यह ~/.bash_profile, ~/.bash_login, और ~/.profile के लिए लग रहा है, इसी क्रम में, और पढ़ता है और पहले एक है कि मौजूद है और पठनीय है से आदेश निष्पादित करता है।
जब कोई लॉगिन खोल निकलता है, तो बैश पढ़ता है और फ़ाइल ~/.bash_logout से कमांड निष्पादित करता है, यदि यह मौजूद है।
जब एक इंटरैक्टिव खोल कि एक लॉगिन खोल शुरू कर दिया है नहीं है, बैश पढ़ता है और अगर कि फ़ाइल मौजूद है ~/.bashrc, से आदेश निष्पादित करता है। यह हो सकता है --norc विकल्प का उपयोग करके अवरुद्ध। --rcfile फ़ाइल विकल्प बाश को ~/.bashrc के बजाय फ़ाइल से कमांड को पढ़ने और निष्पादित करने के लिए मजबूर करेगा।
स्क्रिप्ट ~/.bash_profile
लॉगिन पर चलाया जाता है।
प्लेस अपने bash profile में यह:
~/.bash_profile
आप पर OSX हैं, तो यह ~/.profile
बैश के साथ ओएस एक्स पर, ~/.bash_profile ठीक काम करता है। –
हां, लेकिन ~/.profile पहले से मौजूद है। –
बैश उपयोग करते समय, ~/.bash_profile
, ~/.bash_login
और ~/.profile
के पहले एक इंटरैक्टिव लॉगिन खोल के लिए चलाया जाएगा। मेरा मानना है कि ~/.profile
आम तौर पर बैश के अलावा यूनिक्स शैल द्वारा चलाया जाता है। गैर-लॉगिन इंटरैक्टिव शैल के लिए बैश ~/.bashrc
चलाएगा।
मैं आम तौर पर सब कुछ डाल मैं हमेशा .bashrc
में स्थापित करने के लिए और फिर .bash_profile
, जहां मैं भी कुछ चीजें हैं जो केवल चलाना चाहिए जब मैं इस तरह के ssh-agent
तक का गठन screen
चल के रूप में लॉगिन कर रहा हूं, की स्थापना से चलाने चाहते हैं।
आप एक स्क्रिप्ट और केवल एक स्क्रिप्ट चलाने के लिए चाहते हैं, तो आप यह है कि उपयोगकर्ताओं को डिफ़ॉल्ट खोल कर सकते हैं।
echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd
* username:x:uid:grp:message:homedir:/usr/bin/uptime
रोचक प्रभाव :) हो सकता है (अपने सुरक्षित नहीं यद्यपि, तो यह बहुत ज्यादा भरोसा नहीं है। एक स्क्रिप्ट है कि अपने ड्राइव मिटा होने के लिए अपने डिफ़ॉल्ट खोल स्थापित करने जैसा कुछ भी नहीं। ... हालांकि, .. मैं एक परिदृश्य की कल्पना कर सकता हूं जहां यह आश्चर्यजनक रूप से उपयोगी हो सकता है)
/etc/profile
में एक प्रविष्टि जोड़ें जो स्क्रिप्ट निष्पादित करता है। यह प्रत्येक लॉग-ऑन के दौरान चलाया जाएगा। यदि आप केवल अपने खाते के लिए ऐसा कर रहे हैं, तो इसे चलाने के लिए अपनी लॉगिन स्क्रिप्ट्स (उदा। .bash_profile
) का उपयोग करें।
लॉगिन पर, अधिकांश गोले एक लॉगिन स्क्रिप्ट निष्पादित करते हैं, जिसका उपयोग आप अपनी कस्टम स्क्रिप्ट निष्पादित करने के लिए कर सकते हैं। लॉगिन स्क्रिप्ट खोल निष्पादित करता है निश्चित रूप से निर्भर करता है,, खोल पर:
- बैश: .bash_profile, .bash_login, .profile (पीछे की ओर compabitibility के लिए)
- श: .profile
- tcsh और csh: .login
- zsh:
.zshrc आप शायद तुम क्या
echo $SHELL
करके उपयोग कर रहे हैं खोल पता कर सकते हैं प्रॉम्प्ट से
।
echo $ 0 को प्रकट करना चाहिए कि कौन सा खोल उपयोग किया जा रहा है, हालांकि कभी-कभी मैंने 'sh' को देखा है, जब यह वास्तव में 'ksh' है - एचपी-यूएक्स या सोलारिस I पर लगता है। –
स्टार्टअप पर फ़ाइल को पढ़ने के लिए जानकारी के लिए^INVOCATION के लिए अपने स्थानीय सिस्टम के बैश मैन पेज को खोजें।
man bash
/^INVOCATION
फ़ाइलें खंड में
इसके अलावा,
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
उचित फाइल करने के लिए अपनी स्क्रिप्ट जोड़ें। सुनिश्चित करें कि स्क्रिप्ट $ PATH में है, या स्क्रिप्ट फ़ाइल के पूर्ण पथ का उपयोग करें।
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>
मैं इस समस्या से दिनों से निराश था। उबंटू पर कुछ भी काम नहीं किया। अगर मैं/etc/profile में कॉल डालता हूं तो यह सब लॉग इन प्रयास पर दुर्घटनाग्रस्त हो जाता है। मैं "स्टार्टअप एप्लीकेशन" का उपयोग नहीं कर सका क्योंकि यह वही नहीं था जो मैं चाहता था। यह केवल उस वर्तमान उपयोगकर्ता के लिए स्क्रिप्ट सेट करता है। http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
समाधान होगा::
पता लगाना $ XDG_CONFIG_DIRS पथ:
गूंज $ XDG_CONFIG_DIRS
अपनी स्क्रिप्ट डाल
अंत में मैं इस छोटे से लेख मिला उस निर्देशिका में
क्या लॉगिन? यूआई लॉगिन? gnome, जीटीके, एकता की तरह? शायद टीटी से एक नया खोल लॉगिन? उनके बीच क्या अंतर है? –