On Rebol 2 this points to user home directory (on Linux/OSX this is get-env 'HOME). On r3 this is currently set to where the r3 executable lives.
As it stands we should rename system/options/home to make it clear this is where executable lives and avoid confusing with $HOME. See %rebol.r
We can then reclaim system/options/home to replicate R2 behaviour (if we like?)
Should user definitions live in system/user or should there be somewhere like system/options/user ??
To me if its in system/options then it implies it could be changed by command-line switch. This seems right because you may want to do:
r3 --user-home "/root/MyHome/"
But perhaps user settings should only be updated by the %user.r file?
But what do we do with system/user?? Perhaps we just do... system/user: system/options/user :)
This is where %repl-skin.reb is kept. This could also be a good place to install local modules.
Currently system/user/rebol points to this. I think this should change to something like resources within system/options
See metaeducation/ren-c#475 for how it currently work and how it may change (for Windows).
This is just a stub. See comments from here - metaeducation/ren-c#475
Currently on r3, if %rebol.r is found in system/options/home directory then %rebol.r is run.
This is (intended to be) a system-wide way to update or add features to rebol. So %rebol.r needs to sit next to r3 executable and use the renamed system/options/home
Did Rebol 2 do exactly same thing?
This available on r2 and I believe it is found in folder referenced by system/options/home. Currently not (fully) implemented in r3.
I've never used this but I assume it just updates system/user ??
We can replicate this exactly or we can do something more like %repl-skin.reb, where it runs the file (so think of it like a user local %rebol.r) and then last expression is used to update system/user. So an example of %user.r:
insert system/module-paths: %/path/to/mylibs
import 'baz-lib ;; because I always want this for all my scripts!
make object! [
email: [email protected]
resources: %/some/where/else ;; I've redefined where I live? Should I allow this??
]
If we do resurrect %user.r then I believe it should live under directory defined in Resources directory.
NB. At the moment (in host-start.r) %rebol.r & %user.r run after the switches.
There should be a command-line switch to suppress %rebol.r & %user.r so something like...
r3 --suppress-startup-files
... alternatively it can be other way round (they don't run unless we provide a command-line switch)
Some other handy switches we could add...
--suppress-console-skin
--suppress "console-skin.reb" # alternate version
--suppress "console-skin.reb user.r" # so can suppress multiple startups
--run-user-file "C:\Mystuff\MyRebol\user.r"
NB. See more command-line switches in take 1 & take 2 ideas below.
system/options/exe-home ;; Could be exe-dir or exe-path or something else?
system/options/user/name ;; is this users name on OS or "Joe Bloggs".
;; _ unless set in %user.r
system/options/user/email ;; _ unless set in %user.r
system/options/user/home ;; start-up will populated this if it finds it!
;; Can be overridden by switch. Could even be changed by %user.r !!
;; alternate name choices: home-dir, home-path
system/options/user/resources ;; start-up will populate this if it finds dir under system/options/user/home
;; can be overridden by switch or %user.r (Hmm? perhaps we shouldn't allow??)
;; alternate name choices: resource-dir, resource-path
system/options/user/words ;; Don't know what this is but its currently defined (as _) in system/user
system/options/home ;; this could be an alias to system/options/user/home ??
Related command-line switches could be:
--user-home "/usr/baz"
--user-resources "Some/where/not-in-my-home"
--user-email "[email protected]"
system/options/exe-home ;; Could be exe-dir or exe-path or something else?
system/options/home ;; Same as Rebol 2 (ie. get-env 'HOME)
system/options/resources ;; Same as take 1 version except cannot be overridden by %user.r
system/user/name ;; see system/options/user/name in take 1
system/user/email ;; see system/options/user/email in take 1
system/user/home ;; start-up will populate this with system/options/home
;; Can be changed by %user.r but this WON'T effect system/options/home (I think?)
system/user/words
Related command-line switches could be:
--home "/usr/baz"
--resources "Some/where/not-in-my-home"
No --user-* switches. Use %user.r to update system/user
ref: https://github.com/metaeducation/ren-c/blob/master/src/boot/sysobj.r#L580
system/options/home-- agree with need for new name. But more important, it should be fixed because if you invoke simplyr3thensystem/options/homeis set to$PWD/r3instead of true executable location