phu*_*ehe 26 shell bash zsh path alias
我通常使用的外壳是zsh
. 我有几个别名可以在某些程序中启用颜色,例如ls
和grep
。我还设置了我的自定义路径,以便我可以在非标准位置(例如 in ~/bin/
)执行程序。
我不会将 root 的 shell 更改为zsh
,但我想分享这些设置,以便 root 也可以拥有它。我发现这zsh
不是采购/etc/profile
。我可以在 中获取它/etc/zsh/zprofile
,但我想要一些其他更“正确”的方式。
Gil*_*il' 20
Zsh 有一个 sh 兼容模式,可以让它执行 POSIX sh 代码和一些 bash 扩展。只要您不使用 zsh 没有的 bash 功能(使用相同的语法),您就可以拥有来自两个 shell 的相同文件。使用emulate
内置将 zsh 置于兼容模式;使用该-L
选项,模拟是封闭函数的本地(不是封闭的源脚本)。
source_sh () {
emulate -LR sh
. "$@"
}
Run Code Online (Sandbox Code Playgroud)
对于环境变量之类的东西,您可以使用source_sh /etc/profile
in/etc/zprofile
和source_sh ~/.profile
in ~/.zprofile
,因为配置文件不太可能使用 bash 特定的功能。
对于别名和函数定义之类的内容,由于 shell rc 文件可能包含许多无法共享的内容(提示、键绑定、完成设置等),因此请使用~/.sh_aliases
来自~/.bashrc
和source_sh
'd 的文件在~/.zshrc
。
fsc*_*itt 19
我想创建一个文件/etc/commonprofile
和源它在这两个/etc/profile
和/etc/zsh/zprofile
。这使您可以分享共同的设置,并且仍然使用的机会,bash
分别zsh
在特定环境和语法/etc/profile
分别zprofile
。