使 shell 别名以声明方式依赖于包
Make shell aliases declaratively depend on packages
在 NixOS 中,shell 别名的定义可以在 configurations.nix 文件中定义,如下所示:
environment.shellAliases = {
"my_some_cmd" = "some_cmd -flag 123";
}
即使引用的命令(此处:some_cmd
)在系统中不可用,它也会被分配。比如说,这个命令包含在一个包中。因此,最好声明只有在安装包时才分配别名。
这怎么可能?我是否必须只使用包装 if 语句,或者是否有其他方法来存档它?
如果 if 语句是可行的方法,那如何实现?
您可以使用命令的完整路径绕过安装包的需要,例如:
environment.shellAliases = {
"colored-tree" = "${pkgs.tree}/bin/tree -C";
};
在 NixOS 中,shell 别名的定义可以在 configurations.nix 文件中定义,如下所示:
environment.shellAliases = {
"my_some_cmd" = "some_cmd -flag 123";
}
即使引用的命令(此处:some_cmd
)在系统中不可用,它也会被分配。比如说,这个命令包含在一个包中。因此,最好声明只有在安装包时才分配别名。
这怎么可能?我是否必须只使用包装 if 语句,或者是否有其他方法来存档它?
如果 if 语句是可行的方法,那如何实现?
您可以使用命令的完整路径绕过安装包的需要,例如:
environment.shellAliases = {
"colored-tree" = "${pkgs.tree}/bin/tree -C";
};