Nem eval dircolors nem dircolors funcionarão.
O que você precisa é:
eval "$(dircolors)"
(ou a antiga forma eval "'dircolors'" )
Ou seja, você precisa avaliar a saída de dircolors . dircolors gera o código a ser avaliado pelo shell como:
LS_COLORS='...'
export LS_COLORS
Esse é o código que você deseja avaliar. eval dircolors é igual a dircolors , portanto, ele só executará dircolors com sua saída não redirecionada, de modo que o código de shell acima acabará sendo exibido e não será avaliado por nenhum shell.
Além disso, se $LS_OPTIONS tiver uma lista de opções de ls na sintaxe do shell, por exemplo, aceitando itens como --exclude='*~' , será necessário defini-lo como:
ls() {
eval 'command ls '"$LS_OPTIONS"' "$@"'
}
Ou com zsh :
alias ls='ls "${(Q@)${(z)LS_OPTIONS}}"'
Se é para conter uma lista de opções separadas por espaços, com o bash 4.4 +
ls() {
local IFS=' '
local -
set -o noglob
command ls $LS_OPTIONS "$@"
}
Ou com zsh :
alias ls='ls ${(s: :)LS_OPTIONS}'