2013-07-18 6 views
7

में उर्फ ​​पढ़ नहीं रहा Bashrc फाइल में एक उपनाम बनाया है:बैश स्क्रिप्ट bashrc

alias java='java -Xmx1200m' 

इस उर्फ ​​काम करता है जब मैं सीधे अपनी खोल से एक जावा आदेश चला।

हालांकि, जब जावा कमांड एक बैश स्क्रिप्ट (script.sh) के अंदर होता है, तो यह उपनाम सक्रिय नहीं होता है। मैं कैसे सुनिश्चित करूं कि bashrc फ़ाइल में उपनाम एक बैश स्क्रिप्ट में स्वीकार किए जाते हैं ??

+1

की डुप्लीकेट http://stackoverflow.com/questions/2197461/how-to-set-an-alias-inside:

आप ऐसा नहीं करते हैं, तो आपको एक त्रुटि मिल जाएगा -ए-बाश-खोल-स्क्रिप्ट – suspectus

उत्तर

5

उपनाम गैर-इंटरैक्टिव गोले में विस्तारित नहीं होते हैं।

उपनाम बनाने का एकमात्र तरीका लक्ष्य स्क्रिप्ट को उपनाम के साथ स्रोत करना है।

$ source .bashrc 
$ . custom_script.sh 
1

उपनाम शैल तक सीमित हैं और निष्पादित शैल स्क्रिप्ट में काम नहीं करते हैं। आप एक चर बनाने से बेहतर हैं।

+0

कोई कामकाज ?? –

+0

'.bashrc' में' export java = 'java -Xmx1200m''' का उपयोग करने के बारे में क्या? – fedorqui

+0

यदि शेल स्क्रिप्ट उपयोगकर्ता लॉगिन i.e. cron के बाहर निष्पादित की जाती है तो इसे कॉल नहीं किया जा सकता है - उसे स्रोत की आवश्यकता है। Bashrc – Vahid

4

bash manual से हवाला देते हुए:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see The Shopt Builtin).

कह रही है अपनी स्क्रिप्ट में निम्नलिखित यह काम करना चाहिए:

shopt -s expand_aliases 
+0

कम से कम फ्रीबीएसडी/ओएसएक्स में काम नहीं कर रहा है। 'expand_aliases' पहले से ही डिफ़ॉल्ट रूप से चालू है। –

+2

@AinTohvri आपको स्क्रिप्ट में 'HOME/.bashrc स्रोत 'स्रोत की आवश्यकता होगी। – devnull

+0

यूप, 'shopt -s expand_aliases' के बाद, एहसास हुआ कि। अभी काम कर रहा है, धन्यवाद! –

0

आप इंटरैक्टिव मोड में बैश बैश के तहत अपने स्क्रिप्ट चला सकते हैं; इस स्क्रिप्ट की तरह, कमांड लाइन को जोड़ने के लिए add -i। अब आप अपने उपनाम का उपयोग कर सकते हैं।

#!/bin/bash -i 

alias lsd='ls -al | grep ^d' 

lsd 
0

सबसे आसान जवाब 2 महत्वपूर्ण चीजें करना है या यह काम नहीं करेगा। अपनी दूसरी स्क्रिप्ट में, निम्न कार्य करें: -i इंटरैक्टिव मोड के लिए, और नीचे उल्लिखित दुकान भाग।

#!/bin/bash -i 

# Expand aliases defined in the shell ~/.bashrc 
shopt -s expand_aliases 

इस के बाद, अपने उपनाम है कि आप में ~/परिभाषित किया है .bashrc वे अपने खोल स्क्रिप्ट (giga.sh या any.sh) में और इस तरह के स्क्रिप्ट के भीतर किसी भी समारोह या बच्चे खोल करने के लिए उपलब्ध हो जाएगा।

your_cool_alias: command not found 
संबंधित मुद्दे