Bash w systemie Mac OS X nie zawsze dodaje ukośnika końcowego dla katalogów głównych

5

Korzystam z terminala w wersji 2.2.3 (303.2).

Problem polega na tym, że kiedy próbuję zmienić katalog zaczynając od roota, muszę podwoić tabulację, aby niektóre katalogi mogły się kończyć ukośnikiem.

Na przykład zaczynam pisać

cd /etTab

to daje mi:

/etc

Następnie muszę jeszcze raz nacisnąć klawisz Tab, aby uzyskać potrzebne końcowe slash

/etc/

I w końcu mogę Tabwszystkie kolejne katalogi za pomocą pojedynczego naciśnięcia karty.

Jak mogę to naprawić? Tak bardzo tęsknię za uderzeniem Ubuntu.

Vitalii Zurian
źródło
Nie cd /etcdziała pod OS / X?
Hennes,
Tak, ale muszę na przykład uzyskać dostęp do / etc / some / thing. I jestem przyzwyczajony do robienia tego przy użyciu mniejszej
liczby
1
@Hennes Terminal nie jest powłoką to aplikacja GUI, która korzysta z domyślnej powłoki
Matteo,
1
Możesz to opublikować jako własną odpowiedź. Może dodaj zrzut ekranu taki jak ten cdn.osxdaily.com/wp-content/uploads/2012/03/… Lub sprawdź to po zakończeniu bash. gnu.org/software/bash/manual/html_node/…
Hennes
1
Ciekawy. Zwykle mark-directoriesjest włączony w Bash i powinien robić, co chcesz . Zobacz także: Włączanie kompgena do umieszczania ukośników w katalogach podczas wyszukiwania plików
slhck 16.11.12

Odpowiedzi:

10

Wynika to z faktu, że w OS X /etcjest dowiązaniem symbolicznym:

$ l /etc
lrwxr-xr-x 1 root 11 2012-09-22 09:02 /etc -> private/etc/

to /etc jest plik, a nie katalog.

Jeśli spróbujesz prawdziwego katalogu, /usrzobaczysz oczekiwane zachowanie:

cd /us TAB

cd /usr/

Możesz zmusić Bash do traktowania dowiązań symbolicznych jako katalogów za pomocą tego polecenia:

bind 'set mark-symlinked-directories on'

Dodaj go do swojego .bashrcźródła i źródła (to znaczy, czytaj i wykonuj z niego polecenia) w następujący sposób:

. ~/.bashrc

lub ponownie otwórz Terminal.

jaume
źródło
Ach, całkowicie przegapiłem rzecz z dowiązaniem symbolicznym. Niezłe!
slhck
Tak, to bardzo specyficzne dla OS X. Innym przykładem /varjest symlinkowanie z private/var.
jaume
0

Niestety obecnie najłatwiejszym sposobem jest przełączenie /bin/bashna bin/zsh(Preferencje terminala - Powłoka otwarta za pomocą).

Szkoda jednak, że nie mogę łatwo osiągnąć potrzebnego zachowania dzięki bashowi „z pudełka”.

Nadal muszę eksportować moje aliasy i tak dalej ...

Vitalii Zurian
źródło