為什麼別名在 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

別名在帶有 Korn Shell 的 AIX 中工作。

在你的喜歡的末尾添加一些命令/etc/profile

export PS1="`hostname`# "
alias ll="/usr/bin/ls -lF $*"
alias h="history 50"

如果您希望在環境中設定這些變量,請啟動:

. /etc/profile

相關內容