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}'