You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash中dirname "$0"写法在PowerShell中的等效实现是什么

PowerShell 中对应 bash dirname "$0" 的等效实现

PowerShell 内置了专门的自动变量实现相同能力,无需额外调用命令解析路径:

  • 主流版本(PowerShell 3.0及以上,覆盖当前所有在用的正式版本)直接使用自动变量 $PSScriptRoot 即可,该变量会自动返回当前执行脚本所在目录的绝对路径,和 bash 里 dirname "$0" 的作用完全对应。

对应给出的两个bash常用写法,PowerShell的等效实现如下:

  • 切换工作目录到脚本所在路径(对应bash pushd "$(dirname "$0")"):
# pushd是PowerShell中Push-Location命令的默认别名,可直接调用
pushd $PSScriptRoot
  • 拼接脚本目录下的子目录路径(对应bash data_dir="$(dirname "$0")/data/"):
# 推荐写法:用Join-Path拼接路径,自动适配Windows/macOS/Linux的路径分隔符,兼容性更强
$data_dir = Join-Path $PSScriptRoot "data/"

# 直接字符串拼接的写法在绝大多数场景也能正常运行
$data_dir = "$PSScriptRoot/data/"

老版本兼容提示:如果需要适配早已停止支持的PowerShell 2.0环境(该版本无内置$PSScriptRoot变量),可以用以下写法获取脚本所在目录,该写法在新版本PowerShell中也可正常运行,只是写法更繁琐:

$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition

内容的提问来源于stack exchange,提问作者minhee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:39:06