sla*_*rel 3 ksh alias openbsd csh
我正在运行最新的 OpenBSD,但我无法弄清楚如何设置一个简单的别名,类似于 cls=clear 的东西。我试过把它放在 ~/.cshrc 和 ~/.profile 中。我试过了:
alias cls clear
alias cls=clear
alias cls='clear'
alias cls="clear"
Run Code Online (Sandbox Code Playgroud)
什么都行不通。
在另一个但可能相关的注释中:如果 echo $SHELL 告诉我我正在使用 /bin/ksh,为什么使用 ~/.cshrc 而不是 ~/.kshrc?
.cshrc
是从/etc/skel
那里复制过来的,因为它存在于那里,这就是/etc/skel
(大多数)用户帐户添加的内容所发生的情况。然而,这与sh
or完全无关ksh
;.cshrc
由于csh
自 2BSD 时代以来就已安装和支持而存在(这是一种传统,在这一点上)。
.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$
Run Code Online (Sandbox Code Playgroud)
该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$
Run Code Online (Sandbox Code Playgroud)
鉴于~/.profile
with export ENV=$HOME/.profile
set的双重读取,最好使用不同的文件,例如~/.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$
Run Code Online (Sandbox Code Playgroud)