如何确定当前tcsh
脚本(在脚本内)的来源?
我尝试过的事情:
if (!($0 == "-tcsh")) then
echo "Script should be sourced."
exit 1
endif
如果我尝试不使用任何来源,它将打印Script should be sourced.
(如预期)。
但是,如果我尝试使用source,它将失败,并显示以下错误:if: Malformed file inquiry.
。
如何解决此问题?有没有更好的检查方法?
答案 0 :(得分:0)
您可以通过查看$_
在这里玩一个讨厌的把戏。
$_
代替最后执行的命令的命令行。
如果将其放置在脚本的第一行中,并且结果不是空字符串(即之前已执行过命令),则说明该脚本已被获取。
#!/usr/bin/env tcsh
set sourced = ($_)
if ("$sourced" == "") then
echo "Script should be sourced."
exit 1
endif
从https://unix.stackexchange.com/questions/4650/determining-path-to-sourced-shell-script选出的信息
答案 1 :(得分:0)
虽然还有其他方法可以做到,但是对您自己的方法进行简单的增强就可以了。只需将$ 0用双引号引起来。 即更改行
if (!($0 == "-tcsh")) then
到
if (!("$0" == "-tcsh")) then