AIX(Kornシェル、.profile)で別名が機能しないのはなぜですか?

AIX(Kornシェル、.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

私のデフォルトのシェルはKornシェルです。.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 をシェルとして使用する場合に適用されます。

切断と再接続に関して...基本シェルがkshかどうかはわかりますか? /etc/passwdでユーザーを確認してください。

答え3

これは.profileあなたのシェルプロファイルではありません。これはあなたのログインセッションです。設定ファイル。ログインセッション内で開始された他の対話型シェルではなく、ログイン時に開始されたシェルからのみ読み取ることができます。

ksh独自のカスタムファイルはありませんが、変数を$ENV対話型シェルセッションへのカスタムファイルのパスとして扱います。

だから、次のようなものを追加します。

ENV="$HOME/.kshrc" export ENV

あなたに以下を与える~/.profile

alias 'l=ls -lrt'

あなたに~/.kshrc

変更は、次回ログインするときにのみ適用されます。

答え4

この別名は、AIX および Korn シェルで機能します。

likeの最後にいくつかのコマンドを追加します/etc/profile

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

環境でこれらの変数を設定するには、次のようにします。

. /etc/profile

関連情報