例如:如果从Shell中运行,我可能需要人类可读的输出(每种类型的Shell进行自定义),如果从另一个Perl脚本调用,则需要不同类型的输出,并且如果从连续集成服务器等程序执行,则需要机器可读的格式。
动机:我有一个工具,根据执行它的Shell改变其输出。通常我会实现此行为作为脚本的选项,但是该工具的设计不允许使用选项。其他Shell拥有指示正在运行的Shell的环境变量。我正在编写一个补丁以支持没有这样特殊变量的PowerShell。
编辑:这些答案中许多都是Linux特定的。不幸的是,PowerShell适用于Windows。getppid、$ENV{SHELL}变量和使用ps均无法帮助解决此问题。该脚本需要跨平台运行。
-t
),如果是,就可以假设你是从交互式shell中调用的,而不是从持续集成守护程序中调用的。然而,这种常见的技术并不能针对每个可能的父进程进行自定义输出(但我认为这是一个有些错误的愿望)。 - pilcrow