Linux csh 스크립트에서 $_ 값 재정의

Linux csh 스크립트에서 $_ 값 재정의

Linux csh 스크립트에서 $_ 값을 재정의하고 싶습니다.

cmdline을 사용하여 xterm에서 이 스크립트를 실행합니다.

chmod +x test.csh
test.csh

Test.csh 내용:

#!/usr/bin/tcsh
....
source sourceme.rc
....

sourceme.rc 내용:

...  
set cmd = "import sys; import os; print os.path.abspath(os.path.join(os.path.dirname(sys.argv[2]),'checkenv.py'))"
set checkenv = `python -c "$cmd" $_`
...

sourceme.rc의 $_ 값은 "소스소스me.rc" 만약에"소스소스me.rc"xterm에서 직접 실행됩니다.

하지만, 그소스소스me.rcxterm을 사용하는 대신 csh 스크립트를 사용하여 실행하여 직접 가져오므로 $_ 값이 비어 있습니다.

나는 보았다여기$_는 변경되지 않았지만 test.csh에서 $_의 값을 덮어쓸 수 있는 방법이 있습니까? 예를 들어

set_ = 일부 값

sourceme.rc의 내용을 편집하고 싶지 않다는 점을 고려하면

감사해요

답변1

넌 이걸 할 수 없을 거야매우 좋은.

에서는 입력 버퍼(비대화형 쉘에서는 비어 있음)의 내용을 항상 가져오며 덮어쓸 수 없습니다 tcsh.$_

이 패치워크는 작동할 수 있습니다(ymmv).

set lastline = 'source sourceme.csh'
sed 's/\$_\>/$lastline/g' sourceme.csh | source /dev/stdin

bashdash, 등과 달리 tcsh외부 명령이 아닌 경우 파이프의 오른쪽은 현재 프로세스에서 실행되므로 의 모든 명령이나 변수 할당은 sourceme.csh기본 셸에서 발생합니다.

관련 정보