POSIX shell 语言中的可源/可执行 shell 脚本

POSIX shell 语言中的可源/可执行 shell 脚本

有什么好的 POSIX 兼容方法可以使脚本既可执行文件(脚本中的函数被执行)和内源性使用.命令(除了(至少)1个功能变得可用之外什么也没有发生?

我试过了:

src.sh:

#!/bin/sh -eu
FILENAME=src.sh
f() { echo hello from f; }
case $0 in ($FILENAME|*/$FILENAME) f "$@";; esac

然后用以下方法测试它:

( PATH=$PWD:$PATH; src.sh; . src.sh ; echo ===; f )

这似乎在 Cygwin、MacOS 和 Linux 上按预期工作。

关于如何改进它有什么建议吗?

相关内容