我的主目录中有这些文件:
drwxr-xr-x 3 meuser staff 256 Oct 12 13:11 .
drwxr-xr-x 102 bin bin 4096 Sep 30 12:28 ..
-rw------- 1 meuser staff 5349 Oct 11 20:44 .bash_history
-rwx------ 1 meuser staff 466 Jun 26 22:12 .profile
-rw------- 1 meuser staff 7074 Oct 12 13:11 .sh_history
drwx------ 2 meuser staff 256 Aug 16 15:28 .ssh
我的默认 shell 是 Korn shell。当我尝试.profile
像这样输入别名时:
alias l='ls -lrt'
并尝试在重新登录后运行它:
$ l
ksh: l: not found.
如何使这个别名起作用?
答案1
.profile
仅在登录时读取。以后的修改不会影响当前环境。您必须.profile
通过以下方式重新加载:
- 获取文件:(
. .profile
影响当前的外壳,不是全部贝壳) su -l <user>
(新登录)- 注销+登录
答案2
它确实有效。
我可以看到我自己的 .profile 的唯一区别是双引号:
alias l="ls -l"
该行适用于我在 AIX 中使用 ksh 作为 shell 的情况。
关于断开和重新连接...您确定默认 shell 是 ksh 吗?在 /etc/passwd 中检查您的用户。
答案3
这.profile
不是您的 shell 配置文件,而是您的登录会话设置文件。它只能被登录时启动的 shell 读取,而不能被登录会话中启动的其他交互式 shell 读取。
ksh
本身没有专用的自定义文件,但它将变量$ENV
视为交互式 shell 会话的自定义文件的路径。
所以你会添加类似的内容:
ENV="$HOME/.kshrc" export ENV
给你的~/.profile
和:
alias 'l=ls -lrt'
到你的~/.kshrc
。
更改仅在下次登录时生效。
答案4
该别名在 AIX 和 Korn Shell 中起作用。
在你的喜欢的末尾添加一些命令/etc/profile
:
export PS1="`hostname`# "
alias ll="/usr/bin/ls -lF $*"
alias h="history 50"
如果您希望在环境中设置这些变量,请启动:
. /etc/profile