OpenBSD - 如何设置别名?

OpenBSD - 如何设置别名?

我正在运行最新的 OpenBSD,但我不知道如何设置一个简单的别名,类似于 cls=clear 的东西。我尝试将其放入 ~/.cshrc 和 ~/.profile 中。我试过了:

alias cls clear
alias cls=clear
alias cls='clear'
alias cls="clear"

什么都不起作用。

另一个但可能相关的注释:如果 echo $SHELL 告诉我我正在使用 /bin/ksh,为什么是 ~/.cshrc 而不是 ~/.kshrc?

答案1

.cshrc被复制过来,因为它存在于那里,这就是(大多数)用户帐户添加/etc/skel的内容所发生的情况。然而,这与or/etc/skel完全无关;由于从 2BSD 时代就开始安装和支持(目前是一种传统)而存在。shksh.cshrccsh

.profile仅由登录 shell 读取,因此非登录 shell 的新 shell 不会拾取其中的命令:

valen$ cd
valen$ ed .profile
215
a
echo .profile was run
.
wq
237
valen$ exec ksh
valen$ exec ksh -l
.profile was run
valen$ 

ksh(1)手动的ENV有关于设置非登录实例将读取的环境变量的文档ksh

valen$ ed .profile
237
d
a
export ENV=$HOME/.profile
echo now with ENV set
.
wq
263
valen$ exec ksh
valen$ exec ksh -l
now with ENV set
now with ENV set
valen$ exec ksh
now with ENV set
valen$ 

~/.profile考虑到with set的双重读取export ENV=$HOME/.profile,最好使用不同的文件,例如~/.kshrc包含自定义别名的手册所建议的:

valen$ cat .profile
PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/games
export PATH HOME TERM
export ENV=$HOME/.kshrc
valen$ cat .kshrc
alias cls=clear
valen$ exec ksh -l
valen$ alias | grep cls
cls=clear
valen$ 

相关内容