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 .