Pelo menos no bash, por padrão, a opção set +P é configurada, o que faz com que determinados comandos como cd , pwd e tab-completion sigam a hierarquia de links simbólicos, em vez da hierarquia física. Mas muitos outros comandos, como ls , seguem apenas a hierarquia física.
Você pode fazer set -P para fazer com que todos os comandos sigam a estrutura de diretórios físicos (ou adicioná-los ao seu arquivo ~/.inputrc para permanência entre as sessões). Mas, e se eu quiser ir para o outro lado, para fazer todos (a maioria?) Comandos obedecerem à estrutura de diretórios simbólicos? Isso pode ser feito? Isso é específico para o bash? Alternativamente, existe uma maneira de fazer as coisas acreditarem que o diretório simbólico é físico? E, para esclarecer, estou procurando uma configuração para afetar o comportamento em todas as funções possíveis, não uma solução alternativa como readlink . O mais próximo que eu posso encontrar é esta solução alternativa .
Para um exemplo de como se pode obter resultados desagradáveis, continue lendo. Isso pode levar a um comportamento confuso, pois você pode concluir a tabulação para um arquivo / pasta que o comando que você está executando não conseguirá encontrar. Por exemplo (você pode ter que fazer set +P primeiro):
mkdir symtest1
mkdir symtest1/subdir
ln -s symtest1/subdir
touch youreinthebasedir #a lovely file to show where you're looking
touch symtest1/youreinsymtest1 #yet another
pwd #shows where you are
cd subdir
pwd #should show the same plus "/subdir"
ls ../ #should show the contents of "symtest1"
Agora, digite o seguinte com tab-completion,
ls ../youre guia
e ele será concluído em ../youreinthebasedir
mas aperte enter, e você receberá um erro que o arquivo não existe devido à discrepância acima mencionada.
Algumas discussões mais úteis podem ser encontradas aqui e aqui .