제목에 설명된 대로 할 수 있나요?
"initstuff.sh" 스크립트가 있고 해당 스크립트 내에 무언가를 실행하는 별칭 "shalias"가 있다고 가정해 보겠습니다. 내 .bashrc에 "shalias"를 넣는 것은 불가능합니다. 왜냐하면 컨텍스트에 "shalias"가 포함된 initstuff2.sh, "shalias"가 포함된 initstuff3.sh...등이 있기 때문입니다. 각각은 동일한 빈도로 실행되어야 합니다.
이제 터미널에 로그인했고 "firstArgVal" 및 "secondArgVal" 매개변수를 사용하여 initstuff2에서 "shalias"를 실행하고 싶다고 가정해 보겠습니다.
내 .bashrc에는 다음이 있습니다.
alias runinit1=". /initstuff1.sh"
alias runinit2=". /initstuff2.sh"
따라서 이러한 매개변수를 사용하여 initstuff2에서 "shalias"를 실행하려면 다음 두 줄이 필요합니다.
$ runinit2
$ shalias -firstArgVal -secondArgVal
한 줄로 실행되게 하려면 어떻게 해야 합니까? 특히 .bashrc에 다음을 추가하고 싶습니다.
alias runinit2normal:". /initstuff2.sh ; shalias -firstArgVal -secondArgVal
이것은 작동하지 않습니다. 나는 다음을 얻습니다.
bash: shalias: command not found
runinit2normal을 두 번 호출하면 initstuff2.sh가 첫 번째 호출에서 실행될 기회가 있기 때문에 작동하므로 shalias가 이미 있고 두 번째 호출에서 사용할 수 있지만 이런 종류의 목적은 단일 별칭을 사용하는 것과 반대됩니다. 이 일을 하는 것. 대신 &&를 사용하면 작동하지 않습니다. 나는 또한 그것을 함수로 실행하려고 시도했지만 여전히 운이 좋지 않았고 이상한 동작을 방지하기 위해 runinit2normal을 두 번 호출하는 또 다른 별칭을 만들어 보았습니다. 두 번 호출하면 명령 줄에 있기 때문입니다. 호출하십시오 (따라서 한 번 실패합니다) ). bashrc에서 실제로 예상대로 작동하는 "runinit2normal" 별칭을 만들 수 있는 방법이 있나요?
답변1
귀하의 질문은 문구 때문에 이해하기 가장 쉽지는 않지만, 이 bash 옵션을 설정하면 이미 가지고 있는 것이 작동할 것이라고 생각합니다.
shopt -s expand_aliases