Na moim komputerze, ze względu na sposób, w jaki zostały rzeczy skonfigurować, wykonanie:
cd ~ # /work1/jleffler
cd ~jleffler # /u/jleffler
Pierwsza zwraca uwagę na wartość zmiennej środowiskowej $HOME
; Celowo ustawiłem mój $HOME
na lokalny system plików zamiast na systemie plików podłączonym przez NFS. Drugi odczytuje z pliku haseł (w przybliżeniu; NIS nieco komplikuje) i stwierdza, że plik z hasłem mówi, że mój katalog domowy to /u/jleffler
i zmienia się w tym katalogu.
Denerwujące jest to, że większość oprogramowania zachowuje się jak wyżej (a specyfikacja POSIX dla powłoki wymaga takiego zachowania). Używam oprogramowania (i nie mam zbyt wielkiego wyboru, aby go użyć), które traktuje informacje z pliku haseł jako aktualną wartość $ HOME, co jest błędne.
Stosując to do pytania - jak inni zwrócili uwagę, „cd ~x
” idzie do katalogu domowego użytkownika „x”, a bardziej ogólnie, gdy tyldy jest zrobione, ~x
oznacza katalog domowy użytkownika „x” (i jest błędem, jeśli użytkownik "x" nie istnieje).
Może warto wspomnieć, że:
cd ~- # Change to previous directory ($OLDPWD)
cd ~+ # Change to current directory ($PWD)
nie mogę natychmiast znaleźć zastosowanie dla „~+
”, chyba że robisz jakieś dziwne rzeczy z ruchomymi dowiązania na ścieżce prowadzącej do prądu informator.
Można również zrobić:
cd -
Oznacza to, że tak samo jak ~-
.
~ X po prostu zwraca literał "~ X", ale ~ zwraca $ HOME i ~ + zwraca $ PWD - nie są specjalne, poza tym, że pobierają zmienne powłoki. to znaczy nie przechowują wartości lub wykonują polecenie, aby je wyszukać. Są już zdefiniowane. Czy próbowałeś ~ -? Nie mogę myśleć o użyciu, ale znowu zwraca zmienną powłoki $ OLDPWD – SDsolar