Avatar ·

كيفية الحصول على دليل الملف التنفيذي الحالي في Go؟

مرحباً بالجميع! أنا مطور Go مبتدئ وواجهت مشكلة: أحتاج إلى تحديد الدليل الذي يوجد فيه الملف التنفيذي الحالي لبرنامجي. أكتب تطبيق CLI صغير يقرأ ملف إعدادات موجود في نفس مجلد الثنائي. ولكن عندما أشغل البرنامج من دليل آخر (مثلاً عبر `go run` من جذر المشروع أو من PATH النظام)، تنكسر المسارات النسبية. إليك ما جربته: ```go package main import ( "fmt" "os" "path/filepath" ) func main() { // المحاولة 1: مجرد os.Getwd() — يعطي دليل العمل، وليس مجلد الملف wd, _ := os.Getwd() fmt.Println("Working dir:", wd) // المحاولة 2: os.Args[0] — يظهر المسار الذي استُدعي به البرنامج fmt.Println("Args[0]:", os.Args[0]) // المحاولة 3: filepath.Abs(os.Args[0]) — لا تزال مشكلة الروابط الرمزية abs, _ := filepath.Abs(os.Args[0]) fmt.Println("Abs:", abs) } ``` المشكلة أن `os.Args[0]` قد يكون مجرد