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

如何在GJS中获取当前脚本的完整文件路径?

在GJS中获取当前脚本的完整文件路径

你需要在GJS模块模式(通过gjs -m运行)下获取当前脚本的完整路径,类似Python的__FILE__或Bash的$(dirname "$0"),可以用以下两种方法实现:

方法1:使用import.meta.url(模块模式推荐)

模块模式下,GJS支持ES模块标准的import.meta.url属性,它返回当前脚本的file://格式URL,结合GLib的API可转换为本地文件路径:

修改后的script.js代码:

'use strict';

import GLib from 'gi://GLib';

// 将import.meta.url转换为本地绝对路径
const scriptPath = GLib.filename_from_uri(import.meta.url, null);
// 获取脚本所在目录的路径
const scriptDir = GLib.path_get_dirname(scriptPath);

print(`脚本完整路径:${scriptPath}`);
print(`脚本所在目录:${scriptDir}`);

运行命令:

gjs -m script.js

方法2:通过命令行参数ARGV获取

如果不想依赖import.meta.url,可以通过ARGV获取命令行传入的脚本文件名,再转换为绝对路径:

修改后的script.js代码:

'use strict';

import GLib from 'gi://GLib';

// ARGV[0]为命令行传入的脚本名,转换为绝对路径
const scriptPath = GLib.path_get_absolute_path(ARGV[0]);
const scriptDir = GLib.path_get_dirname(scriptPath);

print(`脚本完整路径:${scriptPath}`);
print(`脚本所在目录:${scriptDir}`);

注意:这种方法依赖命令行参数,若当前脚本是被其他模块导入的,ARGV可能不包含当前脚本路径,因此模块模式下优先推荐方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:32:03