2016-07-17 4 views
2

bash에서는 $0으로 스크립트의 경로를 얻을 수 있습니다. 공식 문서에 따르면 어류 대본에서 $_으로 할 수있는 것으로 보입니다.물고기 스크립트 자체의 경로를 얻는 방법

필자가 이런 물고기 스크립트를 작성하여 실행하려고하면, 개행 문자 만 인쇄됩니다.

#!/usr/bin/fish 
echo $_ 

반응성 물고기, echo $_이 literately echo을 줄 것이다 이 <command>의 인수로 literately "명령"을 전달합니다 동안.

$_의 이상한 동작과 그 용도에 대해 혼란 스럽습니다.

+0

'$ _'에 현재 파일 이름이 포함되어 있다고 생각하게하는 문서 섹션의 내용을 가르쳐 주시겠습니까? 현재 문서에서 언급 된 유일한 곳은 "Programmable Title"섹션에 있으며 "포 그라운드에 넣을 작업 이름"을 명시 적으로 말합니다. – faho

+0

첫째, 정확하게 '프로그래밍 가능한 제목'섹션에서 무엇을 말하고 싶은지 명확히하기 위해 더 많은 예제가 필요하다고 생각합니다. 둘째, 함수의 동작이 물고기 스크립트와 비슷하기 때문입니다. 예를 들어, 모두 매개 변수를 받아들이고'$ argv [$ i]'방식으로 매개 변수를받습니다. '$ _'가 포함 함수의 이름을 줄 수 있기 때문에'$ _'가'$ _'가 최상위에있을 때 스크립트의 이름을 줄 수 있다고 생각하게합니다. 셋째, bash는 스크립트 자체를 표현하기 위해'$ 0'을 사용하기 때문에 물고기가 비슷한 매크로를 사용한다고 생각하게 만듭니다. – TorosFanny

답변

5

$_은 다소 혼란 스럽지만 "물고기 스크립트 경로"가 아니며 현재 전경 직업의 이름입니다.

스크립트의 경로를 얻으려면 status --current-filename (대화식으로 실행되면 "표준 입력"이됩니다)을 사용하십시오.

+2

실제로 대문자로 나타납니다 : "표준 입력". 문장이 아니기 때문에 대문자가 소문자로 변경 되기에는 너무 늦은 지 궁금합니다. –