如何在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
相关产品推荐
相关产品推荐

