在Rebol 2中有一个user.r以及rebol.r文件,用于添加将在启动时加载的代码。 Rebol R3如何改变?
答案 0 :(得分:4)
在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
中加载扩展,以便不再加载扩展;这使您可以限制批准列表的扩展名。任何全局代码都可以延迟加载,因此不会使系统混乱不需要它的脚本。在脚本请求延迟加载代码之前,不会真正导入。
答案 1 :(得分:1)
目前,user.r已被弃用为安全风险。应该采用一种方法来实现这一目标......但是还没有人开始研究它。
请参阅http://chat.stackoverflow.com/transcript/291?m=9149463#9149463