Shell 软件包指南
Arch 软件包指南
32 位 – CLR – CMake – Cross – DKMS – Eclipse – Electron – 字体 – Free Pascal – GNOME – Go – Haskell – Java – KDE – 内核模块 – Lisp – Meson – MinGW – Node.js – 非自由软件 – OCaml – Perl – PHP – Python – R – Ruby – Rust - 安全 – Shell – VCS – Web – Wine
安装
为了让用户能够更改 Shell,该 Shell 必须出现在 /etc/shells
中。大多数 Shell 软件包都有如下安装脚本
shellname.install
post_install() { grep -Fqx /bin/shellname /etc/shells || echo /bin/shellname >>/etc/shells grep -Fqx /usr/bin/shellname /etc/shells || echo /usr/bin/shellname >>/etc/shells } post_upgrade() { post_install } post_remove() { sed -i -r '/^(\/usr)?\/bin\/shellname$/d' etc/shells }
Shell 补全
大多数 Shell 为一些常用命令提供内置的补全功能,同时也会扫描至少一个系统目录,以查找可能由其他软件包提供的函数。下表总结了软件包可以放置补全文件的位置以及文件的命名方式。
Shell | 目录 | 文件 |
---|---|---|
Bash | /usr/share/bash-completion/completions/ |
binary_name
|
Elvish | /usr/share/elvish/lib/ |
binary_name.elv
|
Fish | /usr/share/fish/vendor_completions.d/ |
binary_name.fish
|
Zsh | /usr/share/zsh/site-functions/ |
_binary_name
|
其他 Shell
- Nushell 提供一些默认补全,但尚没有一个可以提供补全的系统级目录[1]。对于生成 Nushell 补全函数的软件包,一种解决方案是将它们打包到 `/usr/share/nushell/autoload/binary_name.nu`,并使用 `post_install()` 函数打印提示,以告知用户在其配置中添加 `use /path/to/file` 语句。
提示: 作为一般规则,软件包不应依赖或可选依赖于 Shell。仅仅因为它们碰巧为 Shell 提供了补全功能,并不意味着存在软件包依赖关系。例外情况是不提供自己补全功能的软件包;补全功能在默认 Shell 软件包中不存在,但由补充的集合软件包 bash-completion 或 zsh-completions 提供。当这些软件包中存在补全文件时,请将它们添加到 optdepends 中。