为什么别名在 AIX(Korn shell、.profile)中不起作用?

为什么别名在 AIX(Korn shell、.profile)中不起作用?

我的主目录中有这些文件:

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

相关内容