在 Rebol 2 中有一个 user.r 和 rebol.r 文件,用于添加将在启动期间加载的代码。Rebol R3 有什么变化?
2 回答
在 Rebol 3 中,您使用 加载代码rebol.r
,它应该与rebol
可执行文件位于同一目录中。它不会rebol.r
从用户的主目录加载,因为该目录中的文件往往可以被以用户权限运行的程序写入,这使其成为放置恶意软件的好地方。假设您放置rebol
可执行文件的位置更容易防止用户代码写入它。
该文件user.r
保留用于放置用户特定的设置和首选项,以非程序性方言(我们尚未讨论)表示。即使它回来,它也不是加载代码的一种方式,原因与rebol.r
不从用户的主目录加载的原因相同。它仅用于偏好。
如果要加载特定于用户的代码,您可能希望使用 中的代码显式执行此操作rebol.r
,但要注意安全问题。在 Rebol 3 中很少需要用户特定的代码。
您还可以考虑利用 Rebol 3 的模块系统。大多数库和实用程序代码最好在模块中定义,您可以通过设置来决定将这些模块放在哪里system/options/module-paths
。然后您的脚本按名称导入实际模块,而不必知道它们的实际位置。您还可以设置system/options/default-suffix
模块的默认文件扩展名,以防%.reb
您不喜欢。
您很少需要加载代码以供全局使用,因为对代码的需求是脚本本地的。一种这样的用途是在rebol.r
锁定安全性之前加载扩展,这样就无法加载更多的扩展;这使您可以限制对已批准列表的扩展。任何全局代码都可以延迟加载,因此不会因为不需要它的脚本而使系统混乱。延迟加载的代码在脚本请求之前不会真正导入。
目前 user.r 作为安全风险已弃用。应该有一种方言的方法来实现这一点..但还没有人开始研究它。
见https://chat.stackoverflow.com/transcript/291?m=9149463#9149463