tcsh
может обновить элементы в argv ()
, если вы предоставите параметры команде source
, но не изменит $ 0
или ] $ _
.
Вы можете увидеть, что происходит, изменив сообщения, чтобы показать, какая переменная печатается и какой сценарий это делает. Сначала «внешний»:
#!/usr/bin/tcsh
set lastCmd0 = ($_)
echo 'O:$lastCmd0'"=${lastCmd0}"
echo 'O:$0'"=$0"
source inner
echo 'O:endOuter'
, а затем «внутренний»
#!/usr/bin/tcsh
set lastCmd1 = ($_)
echo 'I:$lastCmd1='"${lastCmd1}"
echo 'I:$0'"=$0"
echo 'I:endInner'
. Вывод:
> tcsh -f
> source ./outer
O:$lastCmd0=source ./outer
O:$0=tcsh
I:$lastCmd1=source ./outer
I:$0=tcsh
I:endInner
O:endOuter
и
> source ./outer first second
#argv: 2
O:$lastCmd0=source ./outer first second
O:$0=tcsh
I:$lastCmd1=source ./outer first second
I:$0=tcsh
I:endInner
O:endOuter