我正在运行最新的 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 时代就开始安装和支持(目前是一种传统)而存在。sh
ksh
.cshrc
csh
.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$