如何在源脚本中获取当前 shell 的绝对路径?

如何在源脚本中获取当前 shell 的绝对路径?

假设执行任一

. some_script

或者

source some_script

如何some_script确定绝对路径当前的.shell(即正在执行or命令的 shell source)? (请注意,一般情况下,此路径与 的值不同$SHELL。)

换句话说,我正在寻找 的“绝对路径”对应项$$。我认为当前的 shell 进程必须知道可执行文件的来源,但 AFAICT,它没有存储在任何环境变量中。

我能想到的最好办法归结为抓取ps -p $$;的合适变体生成的输出。例如:

CURRENT_SHELL=${"$( PS_FORMAT=cmd PS_PERSONALITY=linux ps -p $$ -h )"% *}

这可能不太便携。 (而且它很丑陋。)


我主要对当前 shell 是zsh. (我对 的相应答案有次要兴趣bash。)

答案1

这是我使用的:

head -n 1 /proc/$$/status | cut -f2

我不确定它是否可以移植到所有 Unices,但它可以在 Linux 和 Cygwin 中运行。

相关内容