配置
env.rsh
和config.rsh
rsh 配置与
rsh 使用一个配置系统,在启动时加载并运行两个 rsh 脚本文件:
首先是env.rsh
,然后是config.rsh
。
这些文件的路径可以通过调用echo $rsh.env-path
和echo $rsh.config-path
找到。
env.rsh
是用来定义环境变量的,之后这些环境变量定义将在config.rsh
中可用;
config.rsh
可以用来在全局命名空间中添加定义、别名等等。
(你可以把 rsh 的配置加载顺序想象成在启动时执行两行
REPL:source /path/to/env.rsh
和source /path/to/config.rsh
。因此,用env.rsh
表示环境,用config.rsh
表示其他配置只是一个约定。)
当你在没有设置这些文件的情况下启动 rsh,rsh 会提示你下载default env.rsh
和default config.rsh
。
你可以通过浏览这些默认文件,了解环境变量的默认值和所有可配置项的列表。
$env.config
配置
rsh 的主要设置是以记录的形式保存在
config
环境变量中。这个记录可以用以下方式创建:
$env.config = {
...
}
你也可以隐藏(shadow)$env.config
并更新它:
$env.config = ($env.config | upsert <field name> <field value>)
按照约定,这个变量被定义在config.rsh
文件中。
环境
你可以在 rsh 会话期间使用
$env.<var> = <val>
在
env.rsh
文件中设置环境变量。比如:
$env.FOO = 'BAR'
(尽管
$env.config
是一个环境变量,按照惯例它仍然在
config.rsh
中定义。)
以下是值得关注的且为 rsh 所特有的几个相对重要的环境变量:
-
LS_COLORS
: 在ls
中为每个文件类型设置颜色 -
PROMPT_COMMAND
: 为设置提示而执行的代码(块或字符串) -
PROMPT_COMMAND_RIGHT
: 为设置正确的提示而执行的代码(块) -
PROMPT_INDICATOR = "〉"
: 提示后打印的提示符(默认为 ">" 类似的 Unicode 符号) -
PROMPT_INDICATOR_VI_INSERT = ": "
-
PROMPT_INDICATOR_VI_NORMAL = "〉 "
-
PROMPT_MULTILINE_INDICATOR = "::: "
使用内置命令进行配置
从 rsh 0.64 版本开始新增了两个内置命令(config rsh
和 config env
),
通过这两个命令,你可以使用自定义的编辑器或者 IDE 快速地更改 rsh
配置信息
rsh 遵循如下的规则来匹配编辑器:
$config.buffer_editor
$env.EDITOR
$env.VISUAL
-
如果上面都未匹配成功,则针对 Windows 运行
notepad
, 其他系统nano
颜色配置部分
你可以在 相关章节 中了解更多关于设置颜色和主题的信息。
将 Rsh 配置为登录 Shell
要把 Rsh 作为一个登录
Shell,你需要配置$env
变量。这样,在你将使用 Rsh
为登录 Shell 时才有足够的支持来运行外部命令。
你可以通过在另一个 Shell(如 Bash)中运行 Rsh 来建立完整的环境变量集。一旦你进入 Rsh,你可以运行这样的命令:
$env | reject config | transpose key val | each {|r| echo $"$env.($r.key) = '($r.val)'"} | str join (char nl)
这将打印出
$env.<var> = <val>
行,每个环境变量一行包含其设置。您可能不需要所有这些变量,例如,PS1
变量是 bash
特有的。
接下来,在一些发行版上,你还需要确保 Rsh
在/etc/shells
列表中:
> cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/bin/fish
/home/jonathan/.cargo/bin/rsh
这样你就可以使用chsh
命令来将 Rsh 设置为你的登录
Shell。在你注销后下次登录时,应该可以看到一个闪亮的 Rsh 提示。
login.rsh
进行配置
使用
如果 rsh 被用作登录
Shell,你可以使用一个特定的配置文件,该文件只在该情况下才会被加载。因此,一个名为
login.rsh
的文件必须在标准配置目录中。
文件 login.rsh
的加载在 env.rsh
和
config.rsh
之后,所以你可以覆盖这些配置,如果你需要的话。
有一个环境变量
$rsh.loginshell-path
包含该文件的路径。
open
为 /usr/bin/open
macOS: 保持
一些工具(例如 Emacs)依靠open
命令来打开 Mac
上的文件。 由于 rsh 有自己的open
命令,它有不同的语义并隐藏了/usr/bin/open
,这样某些工具在试图使用它时将出错。
一个解决这个问题的方法是为 rsh
的open
定义一个自定义命令,并在你的config.rsh
文件中为系统的open
创建一个别名,像这样:
def nuopen [arg, --raw (-r)] { if $raw { open -r $arg } else { open $arg } }
alias open = ^open
PATH
配置
要在
PATH 变量
中添加一个路径,你可以在 env.rsh
中使用
$env.<var> = <val>
和
append
完成,如下:
$env.PATH = ($env.PATH | split row (char esep) | append '/some/path')
这将把 /some/path
追加到
PATH
的末尾;你也可以使用
prepend
将该路径添加到PATH
的开头。