Ubuntu में लॉग इन करते समय शेल स्क्रिप्ट को स्वचालित रूप से कैसे निष्पादित करें


14

लॉग इन करने पर मुझे स्वचालित रूप से निष्पादित करने के लिए स्क्रिप्ट कैसे मिलती है? नहीं जब मशीन शुरू होती है, और सभी उपयोगकर्ताओं के लिए नहीं, लेकिन केवल जब मैं (या स्क्रिप्ट के साथ कोई विशिष्ट उपयोगकर्ता) GNOME UI के माध्यम से लॉगिन करता हूं।

कहीं और पढ़ने से मुझे लगा कि यह .bash_profileमेरे घर की निर्देशिका में है, लेकिन मेरे लिए इसका कोई प्रभाव नहीं है। जब मैं इसे टाइप करके टर्मिनल विंडो में इसे मैन्युअल रूप से निष्पादित करता हूं ~/.bash_profile, लेकिन जब मैं लॉग इन करता हूं तो यह स्वचालित रूप से नहीं चलेगा।

मैं Ubuntu 11.04 चला रहा हूं। मेरे .bash_profile पर फ़ाइल अनुमति है -rwx------। इससे पहले कि मैं इसे आज बनाता, मेरे होम निर्देशिका में कोई .bash_profile मौजूद नहीं था।

मुझे प्रतीत होता है कि लिनक्स के पुराने संस्करणों में .profileप्रत्येक उपयोगकर्ता के लिए एक फाइल है, लेकिन वह भी काम नहीं करता है।

यह कैसे किया जाता है? क्या मुझे काम करने के लिए .bash_profile प्राप्त करने के लिए कुछ और कॉन्फ़िगर करने की आवश्यकता है? या क्या प्रति-उपयोगकर्ता लॉगिन स्क्रिप्ट को किसी अन्य फ़ाइल में होना चाहिए?


.bash_profile, .profile और .bashrc (जो कि वास्तव में ubuntu द्वारा उपयोग किया जाता है) को हर बार जब आप एक bash टर्मिनल खोलते हैं लोड किया जाता है। इसलिए वास्तव में मुझे यकीन नहीं है कि वे लोड किए जाएंगे यदि आप बस जीडीएम में प्रवेश करते हैं।
जुआन सेबेस्टियन टोटेरो

अपने Ubuntu संस्करण को पोस्ट करने से मदद मिल सकती है। उबंटू में 10.10 .bashrc "मेरे लिए काम करता है (TM)।"
Vlueboy

क्या आपका मतलब है जब आप GUI, या शेल में लॉग इन करते हैं?
इश्कबाज

जब आप एक नया शेल शुरू करते हैं, तो उन्हें लोड किया जाता है, इसलिए वे केवल तब लोड होते हैं जब आप टर्मिनल विंडो खोलते हैं या वर्चुअल टर्मिनल में लॉग इन करते हैं, न कि जब आप Gnome (GDM) में लॉग इन करते हैं।
shiftycow

मैं Ubuntu 11.04 का उपयोग कर रहा हूं, जैसा कि मैंने मूल प्रश्न में उल्लेख किया है।
15:30 बजे माइक रोवे

जवाबों:


11

आप सिस्टम> वरीयताएँ> स्टार्टअप एप्लिकेशन में निम्नलिखित कमांड जोड़ सकते हैं:

bash /full/path/to/your/script.sh

यह ट्रिक काम आना चाहिए ;)


आप जानते हैं कि, मैंने पहले क्या किया था और यह काम नहीं किया ... सिवाय इसके कि मैंने स्क्रिप्ट के रास्ते से पहले "बैश" नहीं लिखा! मैं इसे बाद में बैश के साथ आज़माऊँगा। जिज्ञासा से बाहर, जब आप GUI के माध्यम से स्टार्टअप एप्लिकेशन में कुछ दर्ज करते हैं, तो यह किस फ़ाइल में पंजीकृत है?
माइक रोवे

स्टार्टअप कार्यक्रमों में पंजीकृत होना चाहिए/etc/xdg/autostart
shiftycow

bash /home/myusername/scriptname"स्टार्टअप एप्लिकेशन" में जोड़ना काम किया! धन्यवाद। हालाँकि यह उबंटू के गनोम के लिए विशिष्ट हो सकता है, इसलिए मैं इस बारे में सोच रहा था कि उस "स्टार्टअप एप्लिकेशन" मेनू आइटम में प्रविष्टियां कहाँ पंजीकृत हैं, क्योंकि यह लिनक्स के अन्य आधुनिक संस्करणों में समान होने की अधिक संभावना होगी।
माइक रोवे

2
/etc/xdg/autostartकिसी उपयोगकर्ता के लिए विशिष्ट नहीं, एक सिस्टम-वाइड फ़ाइल प्रतीत होती है।
माइक रोवे

Ubuntu के बाद के संस्करणों के लिए askubuntu.com/questions/159887/…
TooTone

8

इसलिए मूल रूप से, जैसा कि nodiscc ने सुझाव दिया है, एक डेस्कटॉप लांचर बनाएँ: ~ / .config / autostart / script.desktop निम्नलिखित सामग्री के साथ:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

फिर ऑटोस्टार्ट स्क्रिप्ट बनाएं: ~ / बिन / ऑटोस्टार्ट अपनी बैश सामग्री के साथ:

#!/bin/bash
# Execute bash script below

सुनिश्चित करें कि ~ / बिन / ऑटोस्टार्ट निष्पादन योग्य है


5

Crontab में आप एक लाइन जोड़ सकते हैं -

crontab -e

उसके बाद खुलने वाली फ़ाइल में इस लाइन को जोड़ें:

@reboot /path/to/your/cool/script

यह स्क्रिप्ट को रिबूट पर चलाएगा। अधिक जानकारी के लिए देखेंman crontab


मुझे पता नहीं क्यों, लेकिन मैं "स्टार्ट अप एप्लिकेशन" पर .sh फ़ाइलों को निष्पादित नहीं कर सकता, इसलिए अब इसे करने का सबसे आसान तरीका क्रोन है
अल्बर्ट कैटला

1

कोशिश करें ~/.xinitrc(कुछ जानकारी यहां: https://wiki.archlinux.org/index.php/Xinitrc )। याद रखें कि इस स्क्रिप्ट में आप जो कुछ भी शुरू करते हैं, उसे पृष्ठभूमि में शुरू / चलाया जाना चाहिए, या यह एक्स लॉगिन में हस्तक्षेप कर सकता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.