Use set -P
:
/home/user1/$ set -P
/home/user1/$ cd here
/tmp/subdir1/subdir2/here$ <--- path is now explicitly correct
(desfazer com set +P
).
Ou force esse comportamento ao invocar cd
:
/home/user1/$ cd -P here
/tmp/subdir1/subdir2/here$ <--- path is now explicitly correct
Ou corrija seu diretório de trabalho depois que você cd
normalmente:
/home/user1/$ cd here
/home/user1/here$ cd 'pwd -P'
/tmp/subdir1/subdir2/here$ <--- path is now explicitly correct
Ou modifique o seu cd
, assim, quando é dado um arquivo , ele lê o destino dele e age como você deseja :
cd(){ if [ -f "$1" ]; then command cd "'cat "$1"'"; else command cd "$@"; fi }
Agora:
/home/user1/$ echo "/tmp/subdir1/subdir2/here" > there
/home/user1/$ cd there
/tmp/subdir1/subdir2/here$ <--- path is now explicitly correct
Esta é uma prova de conceito. Ajuste-o às suas necessidades. Alguma lógica para rejeitar arquivos binários ou grandes (dados por engano) pode ser o primeiro ajuste sensato.