मैं इसे कैसे बना सकता हूं ताकि मैं कंसोल में अपना नाम लिखकर एक विशिष्ट कार्यक्रम चला सकूं?


17

मैंने हाल ही में लाइट टेबल को git रिपॉजिटरी से डाउनलोड करने के लिए स्थापित किया है, और डेस्कटॉप लॉन्चर बनाने के लिए इस वेबसाइट के निर्देशों का पालन किया है ।

अब मैं टर्मिनल में सीधे टाइप करके प्रोग्राम चलाना चाहता हूं

LightTable

और नहीं

./opt/LightTable/deploy/LightTable

6
@ user68186 PATHपर्यावरण चर में निर्देशिका को जोड़ना अक्सर इसे प्राप्त करने का सबसे अच्छा तरीका नहीं है, और कभी-कभी सिस्टम को तोड़ भी सकता है या सुरक्षा कमजोरियां पैदा कर सकता है। (एक किसी अन्य निष्पादनयोग्य कि आदेश में इस से चालू हो जाएगा पर विचार करना चाहिए, साथ ही जहां में PATH, यह दिया जाता है।) एक खोल उपनाम जोड़ने के रूप में यहाँ जवाब के अंतर्गत आने वाले, किसी को भी करता है जो इस तरह की जटिलताओं पर विचार करना नहीं चाहते हैं के लिए बेहतर है; यह प्रश्न में विशिष्ट एप्लिकेशन के अनुरूप अधिक संकीर्ण है। इस प्रकार यह उस प्रश्न का एक डुप्लिकेट नहीं है, हालांकि वे थोड़ा ओवरलैप करते हैं।
एलियाह कगन

संबंधित (लेकिन जरूरी नहीं कि एक डुप्लिकेट): मैं अपने रास्ते में एक निर्देशिका कैसे जोड़ूं?
सेठ

जवाबों:


20

यह एक उपनाम के साथ crudely पूरा किया जा सकता है। आप अपनी .bashrcफ़ाइल में एक पंक्ति जोड़कर एक स्थायी बैश उपनाम बना सकते हैं ।

टर्मिनल रन में nano ~/.bashrc

निम्नलिखित पंक्ति को नीचे जोड़ें:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

ध्यान दें कि मैंने आपको इसके बजाय पूर्ण पथ जोड़ा है .ताकि यह किसी भी कार्यशील निर्देशिका में काम करेगा। टर्मिनल को बंद करें और फिर से खोलें या source ~/.bashrcbashrc फ़ाइल को पुनः लोड करने के लिए चलाएँ ।


7

यह एक प्रारंभिक प्रश्न नहीं है, ऐसा करने का सबसे अच्छा तरीका एक उपनाम के रूप में है, उदाहरण के लिए इल का उपयोग करें

टर्मिनल खोलें Ctrl+Alt+T

nano ~/.bashrc

इसे फाइल के नीचे लिखें:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

Netbeans शब्द वह कमांड है जिसका उपयोग आप प्रोग्राम शुरू करने के लिए करेंगे, आप इसे अपनी आवश्यकता के अनुसार बदल सकते हैं। उद्धरणों के अंदर वह कमांड है जिसे आप चलाना चाहते हैं जब netbeans उर्फ ​​कहा जाता है।

इस आदेश को सक्रिय करने के लिए आपको टर्मिनल को फिर से खोलना होगा


मैं अपनी कम प्रतिष्ठा के कारण मतदान नहीं कर सकता, लेकिन जवाब देने के लिए धन्यवाद, यह बहुत उपयोगी था
dapias

5

आप निष्पादन योग्य को कॉपी करने का प्रयास कर सकते हैं /usr/binयदि इसका सरल निष्पादन योग्य प्रोग्राम है और किसी अन्य फाइल पर निर्भर नहीं है। अगर यह अन्य फ़ाइलों पर निर्भर करता है, तो सबसे अच्छा प्रोग्राम के लिए एक शॉर्टकट कमांड बनाना है।

जहाँ आप उपनाम बनाते हैं वह स्वयं (.bashrc, .profile, आदि) द्वारा होता है। हालाँकि मैं व्यक्तिगत रूप से अपने सभी एनवायरमेंट वेरिएबल को अपनी .bash_aliasesफ़ाइल में देता हूँ (आपको इसे पहले स्टैन्स पर बनाने की आवश्यकता है)।

अपने गृह फ़ोल्डर में फ़ाइल .bash_aliases बनाएँ और इसे वैसे भी संपादित करें जैसे आप चाहें। फिर शॉर्टकट बनाने के लिए, आप यह कर सकते हैं:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

फ़ाइल सहेजें और यह बात है।

पीएस: आप एलियास को लाइटवेट के रूप में भी रख सकते हैं और लाइटटेबल मामले में एल को अपरकेस करना भूल जाते हैं या यदि कैप्सलॉक दुर्घटना से सक्रिय है, तो आपको फिर से कमांड टाइप करने की आवश्यकता नहीं है।


मैं अपनी कम प्रतिष्ठा के कारण मतदान नहीं कर सकता, लेकिन जवाब देने के लिए धन्यवाद, यह बहुत उपयोगी था
dapias

यह उन चीजों को डालने के लिए अनुशंसित है जो एप्ट के माध्यम से /usr/local/binइसके बजाय स्थापित नहीं हैं । चीजों को /usr/binमिटाया जा सकता है या एप्ट पैकेज द्वारा प्रतिस्थापित किया जा सकता है, लेकिन चीजें /usr/local/binअकेले में रह जाती हैं।
चाई टी। रेक्स

3

मुझे यकीन नहीं है कि अन्य उत्तरदाताओं ने यह सुझाव क्यों नहीं दिया है, लेकिन जैसा कि ओपी ने वास्तव में बताया है, $PATHचर के लिए प्रस्तुत करने का तरीका होगा जो मैंने इसे हासिल किया होगा:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

फिर साथ चलाएं:

LightTable

नोट: मैं तो उर्फ होगा LightTableकरने के लिए lighttableउपयोग में आसानी के लिए: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias
जोएनलैंड जूल

2

मुझे लगता है कि एक उपनाम की तुलना में एक प्रतीकात्मक लिंक बनाने के लिए बेहतर है। जब आप एक नहीं चाहते थे, तो एक उपनाम आपकी कमांड लाइन पर प्रतिस्थापन कर सकता है ; सीमलिंक बनाने से आप कार्यक्रम को अपनी इच्छानुसार चला सकते हैं:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

यह / usr / लोकल / बिन (जो आपके PATH में पहले से ही होना चाहिए!) को एक शॉर्टकट बनाएगा, जहां वास्तव में LightTable है। ध्यान दें कि यदि आप "लाइटटेबल" में कैपिटल अक्षरों को पसंद नहीं करते हैं, तो आप सिमिलिंक का नाम बदल सकते हैं:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

केवल संदर्भ के लिए, यदि प्रोग्राम अजीब तरह से डिज़ाइन किया गया है, अर्थात कॉन्फ़िगरेशन फ़ाइलों या पुस्तकालयों या जो कुछ भी नहीं मिल रहा है, उसके बारे में शिकायत करता है, तो एक और समाधान जो अधिक उपयोगी हो सकता है वह एक आवरण स्क्रिप्ट बना रहा है। ऐसा करने के लिए बस एक फ़ाइल बनाएँ (जहाँ भी आप समय के लिए पसंद करें) जिसे "लाइटटेबल" (या जो कुछ भी आपको पसंद है) को इसमें शामिल करें:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

इस फ़ाइल की अनुमतियाँ बदलें:

chmod 755 <wrapper_script>

और इसे निष्पादित करने का प्रयास करें कि क्या यह काम करता है, और यदि ऐसा है तो इसे / usr / स्थानीय / बिन पर ले जाएँ:

sudo mv -i <wrapper_script> /usr/local/bin

आपका कहना सच है, लेकिन वह जो चाहते थे, उसका जवाब नहीं दिया। वह फ़ाइल के नाम / उपनाम का उपयोग करके इसे निष्पादित करना चाहता था
जॉन्स

1
@ जॉन: मुझे क्षमा करें, मुझे समझ नहीं आ रहा है कि अंतर क्या है। मैं इस कार्यक्रम को निष्पादित करने के लिए एक रास्ता पूछने के रूप में प्रश्न को समझता हूं, इसके पथ को निर्दिष्ट किए बिना। क्या शेल किसी अन्य नाम का उपयोग करता है या PATH तंत्र को कोई फर्क नहीं पड़ता है यदि आप केवल प्रोग्राम को निष्पादित करने के लिए कह रहे हैं। यदि आप फ़ाइल के साथ कुछ और करना चाहते हैं, तो फ़ाइल का पूर्ण पथ प्रदान करने के लिए एक उपनाम का उपयोग करना वास्तव में सबसे अच्छा तरीका है, लेकिन (s) वह केवल फ़ाइल चलाना चाहता है। क्या मैं गलत हूं?
जोरावर

नहीं, यह मेरी गलती थी, आपका सही।
जॉन्‍न

1
@ जॉन: आह, ठीक है, वैसे भी महत्वपूर्ण आंख के लिए धन्यवाद!
जोरावर

0

मैंने ऐसा करने की कोशिश की, जब मैंने उबंटू में शुरुआत की। जब आप टर्मिनल में लाइटटेबल डालते हैं तो यह $PATHनिर्देशिकाओं में लाइटटेबल नामक एक फ़ाइल की खोज करता है । आप echo $PATHनिर्देशिका प्राप्त करने के लिए रख सकते हैं ।

यदि आप अपने लाइटटेबल प्रोग्राम को निष्पादित करना चाहते हैं ./opt/LightTable/deploy/LightTable, तो आपको क्या करना है, अपनी लाइट टेबल फाइल को इन /usr/games or /usr/bin.पर रखें, जिसमें सुपर यूजर की आवश्यकता होती है।

Ctrl + Alt + T द्वारा टर्मिनल खोलें

फिर रखें

मैं उपयोग करके लाइटटेबल का शॉर्टकट बनाना पसंद करता हूं

sudo ln -s path/to/LightTable  /usr/games/LightTable

फिर SU पासवर्ड डालें। फिर, आप LightTableटर्मिनल में उपयोग करके अपने प्रोग्राम को एक्सेस कर सकते हैं

आप कुछ भी कर सकते हैं /usr/binया /usr/local/binइसके बजाय /usr/games, एक $PATHनिर्देशिका है, यह ऐसा होने की जरूरत नहीं है, लेकिन मैं आपको इसे जगह देने की सलाह देता हूं/usr/local/bin

मैं भी सुझाव है कि आप के रूप में आउटपुट फ़ाइल को बदलने के लिए lightpathके बजायLightPath

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