2012-05-22 3 views
1

다음과 같은 문제가 있습니다. 현재 실행중인 테스트 스크립트가 많습니다. MKS Toolkit입니다. 우리는 mingw shell (msys)을 사용하여 스크립트를 실행할 수 있었지만 BKS가 아니라 내장 된 MKS 툴킷 인 alias을 사용하는 다른 스크립트가 있습니다.쉘 문제 : 별칭이 확장되지 않습니다.

아무도 스크립트를 사용하여 자동으로조차도 스크립트를 변경하려고하지 않는 것이 문제입니다. 이것은 그 별칭을 정의하고 사용해야한다는 것을 의미합니다. 나는 msys 셸의 "/ etc/profile"파일에서 별칭을 정의하려고 시도했지만 성공하지는 못했습니다. 또한 shopt -s expand_aliases ("/ etc/profile"에 있음)을 사용하려고 시도했지만 작동하지 않습니다.

다른 사람이 어떻게 할 수 있는지 아이디어를 공유 할 수 있습니까? 기존 스크립트는 그대로 유지해야합니다.

의견이나 아이디어를 환영합니다.

감사

+0

당신에게 자신의'.profile'에서 스크립트 소스'/ 외/profile'를 실행하는 사용자 확실 : 내 경우에는, 기능이 스크립트는 다음과 같습니다 필요도 alias ES 및 수출? – choroba

+0

@ chorob 예. 나는 에코를 넣고 작동한다. – INS

답변

0

This answer은 해결책을 주었다. 그것은

bash script_name.sh 

BASH_ENV는 쉘의 환경을 설정하는 스크립트를 가리 실행하기 전에 BASH_ENV 변수를 정의하는 것을 포함한다.

shopt -s expand_aliases 

alias my_alias="echo my_alias" 

function MyFunction { 
    echo "MyFunction(DUMB):" $* 
} 

export -f MyFunction 
2

/etc/profile은 로그인 쉘을 위해 공급된다. 스크립트에서 별칭을 원하면 별도의 파일에 넣고이를 필요로하는 스크립트로 가져와야합니다.

aliases.sh :

alias walrus="echo coo coo cah joo" 

script.sh :

#!/bin/bash 

shopt -s expand_aliases 
. aliases.sh 

walrus 

아마도 할 수있는 가장 합리적인 방법 다음

$ ./script.sh 
coo coo cah joo 

을 예를 들어 그것. 모든에서 스크립트 을 변경하지 않는 주장하는 경우에, 당신은 간접적 등을 실행 멀리 얻을 수 있습니다 대화 형 쉘을 실행 (및 별칭과 소스를 확장 bash는 말할 것이다

bash --rcfile aliases.sh -i script.sh 

script.sh를 실행하기 전에 우리의 aliases 스크립트).

+0

귀하의 대답은 제 솔루션과 유사하다고 생각합니다. 실수로 bash 문서를 탐색 한 후 stackoverflow 아카이브를 통해 찾았습니다. – INS

관련 문제