Linux bash-스크립트를 소스없이 소스에서 별명 추가


0

다음과 같은 스크립트를 작성할 수 있습니까?

#!/bin/bash
alias foo="bar -options"

source스크립트를 (-) 하지 않고 실행중인 쉘에 추가 된 별칭을 얻습니다.

source myscript

작동하지만

myscript

아니. 별명은 서브 쉘 (프로세스)에 설정되었지만 종료 스크립트에서 유실됩니다.

부모 쉘의 별칭을 변경할 수있는 가능성 source


나는 생각한다 $(echo 'alias foo=bar')(당신이 대체 할 수있는 방법 echo에 다른 복잡한 명령 / 스크립트) 다른 질문은 아마도 유일한 옵션입니다. 그러나 실제로 source여기에 적합한 도구입니다. 왜 당신이 그것을 사용하는 것에 반대하는지 이해하지 못합니다.
DaoWen

2
이것은 XY 문제처럼 들립니다. source명령 을 피하려는 이유를 설명 하면 훨씬 유용한 답변을 얻을 수 있습니다.
John1024

@DaoWen-다시 한 번 감사합니다. @ John1024-XY는 어디에 있습니까? "가능한 경우"만 묻습니다. source작업중인 스크립트에 -options를 통해 많은 기능이 있으므로 피하고 싶습니다 . 따라서 모든 함수가없이 호출 source되므로 스크립트 사용시 오류를 최소화하려고합니다. 나는 때때로 전화를 선호하지 않습니다 myscript때로는 source myscript. 다시 질문은 가능합니까? 도와 주셔서 감사합니다.
Tom Freudenberg

@DoaWen 작동하지 않는 것은 : $(echo 'alias foo="bar -option"')-이것은 여전히 ​​문제입니다 :-)
Tom Freudenberg

@TomFreudenberg 유닉스의 디자인 철학은 아이들해야한다는 것입니다 하지 등 / 부모의 환경 / 별칭을 변경 할 수 있습니다. 스크립트의 원치 않는 부분을 얻지 않고 스크립트간에 공유하려는 별칭이있는 경우 표준 방법은 해당 별칭 정의를 별도의 파일에 저장 한 다음 원하는 스크립트를 사용하여 해당 파일을 소싱하는 것입니다. 별도로, "-options를 통해 많은 기능을 가지고 있습니다"라는 문장을 명확하게 설명 하시겠습니까? "-옵션"이란 무엇입니까?
John1024
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.