如何确定tcsh脚本是否源于脚本[tcsh,而不是bash]

时间:2018-08-15 07:33:22

标签: shell tcsh

如何确定当前tcsh脚本(在脚本内)的来源?

我尝试过的事情:

if (!($0 == "-tcsh")) then
    echo "Script should be sourced."
    exit 1
endif

如果我尝试不使用任何来源,它将打印Script should be sourced.(如预期)。

但是,如果我尝试使用source,它将失败,并显示以下错误:if: Malformed file inquiry.

如何解决此问题?有没有更好的检查方法?

2 个答案:

答案 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