Jeśli utworzę dowiązanie symboliczne w terminalu za pomocą polecenia podobnego do
ln -s /path/to/some/directory symbolicLink
a następnie kliknij link za pomocą
cd symbolicLink
terminal wydaje się myśleć, że cwd jest ~/symbolicLink/
mimo tego, że faktycznie pokazuje ~/path/to/some/directory/
(zakładając, że łącze zostało utworzone ~
, oczywiście). Oznacza to, że jeśli następnie napiszę, zabiorę cd ..
mnie z powrotem ~
, ponieważ terminal „myśli”, że jest to rodzic cwd.
Co musiałbym zmienić, aby cd ..
zamiast tego zabrać mnie ~/path/to/some/
, tj. Prawdziwego rodzica ~/path/to/some/directory/
?
cd -P
nadal rozwiązuje problem, z którym miałem do czynienia, ale nadal warto o tym wiedzieć.Alternatywnym sposobem jest uruchomienie:
źródło
Czuję twój ból - uważam,
bash
że z powodu tego zachowania jestem zasadniczo złamany do użytku interaktywnego.tcsh
jest znacznie bardziej przyjazną dla użytkownika powłoką do interaktywnego użytku. Pozostawbash
do programowania (jeśli nalegasz na pisanie skryptów powłoki, gdy istnieje wiele lepszych alternatyw wśród wielu języków skryptowych).Aby zmienić powłoki dla dowolnego użytkownika, wpisz
chsh
w wierszu polecenia i postępuj zgodnie z instrukcjami (ponownie polecam/bin/tcsh
i doskonałą książkę O'Reilly Korzystanie z csh i tcsh , dostępną prawie za darmo).źródło
cd
zachowaniem dla dowiązań symbolicznych. Muszę pamiętać, aby włożyćset -o physical
moją.bashrc
lub.bash_profile
każdą maszynę, z której korzystam.