다음과 같은 스크립트를 작성할 수 있습니까?
#!/bin/bash
alias foo="bar -options"
source
스크립트를 (-) 하지 않고 실행중인 쉘에 추가 된 별칭을 얻습니다.
source myscript
작동하지만
myscript
아니. 별명은 서브 쉘 (프로세스)에 설정되었지만 종료 스크립트에서 유실됩니다.
부모 쉘의 별칭을 변경할 수있는 가능성 source
이것은 XY 문제처럼 들립니다.
—
John1024
source
명령 을 피하려는 이유를 설명 하면 훨씬 유용한 답변을 얻을 수 있습니다.
@DaoWen-다시 한 번 감사합니다. @ John1024-XY는 어디에 있습니까? "가능한 경우"만 묻습니다.
—
Tom Freudenberg
source
작업중인 스크립트에 -options를 통해 많은 기능이 있으므로 피하고 싶습니다 . 따라서 모든 함수가없이 호출 source
되므로 스크립트 사용시 오류를 최소화하려고합니다. 나는 때때로 전화를 선호하지 않습니다 myscript
때로는 source myscript
. 다시 질문은 가능합니까? 도와 주셔서 감사합니다.
@DoaWen 작동하지 않는 것은 :
—
Tom Freudenberg
$(echo 'alias foo="bar -option"')
-이것은 여전히 문제입니다 :-)
@TomFreudenberg 유닉스의 디자인 철학은 아이들해야한다는 것입니다 하지 등 / 부모의 환경 / 별칭을 변경 할 수 있습니다. 스크립트의 원치 않는 부분을 얻지 않고 스크립트간에 공유하려는 별칭이있는 경우 표준 방법은 해당 별칭 정의를 별도의 파일에 저장 한 다음 원하는 스크립트를 사용하여 해당 파일을 소싱하는 것입니다. 별도로, "-options를 통해 많은 기능을 가지고 있습니다"라는 문장을 명확하게 설명 하시겠습니까? "-옵션"이란 무엇입니까?
—
John1024
$(echo 'alias foo=bar')
(당신이 대체 할 수있는 방법echo
에 다른 복잡한 명령 / 스크립트) 다른 질문은 아마도 유일한 옵션입니다. 그러나 실제로source
여기에 적합한 도구입니다. 왜 당신이 그것을 사용하는 것에 반대하는지 이해하지 못합니다.