The analog to the first argument to main in C is

  (find-system-path 'run-file)

I think that's probably what you want.


Something closer to `get-current-source` but adapting to a run-time
file is

 (variable-reference->module-source
  (#%variable-reference))

Here, `(#%variable-reference)` is the primitive form that obtains a
connection to the enclosing module at run time. If you create an
executable with `raco exe`, though, the "source" of the module will be
a symbolic name instead of a path, because a module that's embedded in
an executable doesn't have a file identity anymore.

At Thu, 26 Aug 2021 07:51:35 -0700, Jeff Henrikson wrote:
> Racket users,
> 
> Many software applications use their location in the filesystem to 
> establish filesystem relationships between their executable file, their 
> configuration and their data.  For this purpose, C provides the first 
> element of the string array provided to main, python provides __file__, 
> bash provides ${BASH_SOURCE[0]}, etc.
> 
> Racket strips said value before current-command-line-arguments receives 
> the subsequent command-line arguments from the operating system.
> 
> A related value can be pulled from syntax-source as follows:
> 
>     (define-syntax (get-current-source stx)
>        (datum->syntax
>         (quote-syntax here)
>         (syntax-source stx)
>         stx))
> 
> Macro get-current-source works as intended if called at program startup 
> and the program is compiled on the fly with:
> 
>     racket program.rkt
> 
> However get-current-source has the unintended property of memorizing the 
> original source location if the program is compiled with raco exe (and 
> then moved).
> 
> Is there a way in racket to obtain the path of the application program?
> 
> 
> Jeff Henrikson
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email 
> to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-users/a076dfa2-d1a5-3cda-72ae-a30cdb91d
> c31%40gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20210826091451.14%40sirmail.smtps.cs.utah.edu.

Reply via email to