OpenBSD - Como se define um alias?

2

Estou executando o OpenBSD mais recente e não consigo descobrir como definir um alias simples, algo como cls = clear. Eu tentei colocá-lo em ~ / .cshrc e em ~ / .profile. Eu tentei:

alias cls clear
alias cls=clear
alias cls='clear'
alias cls="clear"

Nada funciona.

Em outra nota, mas talvez relacionada: Se o echo $ SHELL me disser que estou usando / bin / ksh, por que um ~ / .cshrc em vez de ~ / .kshrc?

    
por slaurel 17.10.2018 / 18:28

1 resposta

2

.cshrc é copiado de /etc/skel porque existe lá e é o que acontece com o conteúdo de /etc/skel na maioria das adições de conta de usuário. No entanto, isso é totalmente não relacionado a sh ou ksh ; .cshrc existe devido a csh sendo instalado e suportado desde os dias do 2BSD (uma tradição, neste ponto).

.profile é lido apenas por shells de login, então os comandos não serão selecionados por novos shells que não sejam shells de login:

valen$ cd
valen$ ed .profile
215
a
echo .profile was run
.
wq
237
valen$ exec ksh
valen$ exec ksh -l
.profile was run
valen$ 

O ksh(1) manual tem documentos sobre como definir uma variável de ambiente ENV que as instâncias de não-login de ksh vai ler:

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$ 

Dada a leitura dupla de ~/.profile com export ENV=$HOME/.profile set, talvez seja melhor ter um arquivo diferente, como ~/.kshrc , conforme recomendado pelo manual que contém seus aliases personalizados:

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$ 
    
por 17.10.2018 / 18:56