Zmienić katalog bez wpisywania cd?

17

Czy można dokonać zmiany katalogu bash w wierszu poleceń, wpisując ten katalog bez żadnych podobnych poleceń cd?

Na przykład czy jest to możliwe zamiast pisać to:

$ cd /tmp

Chcę tylko napisać tylko to:

$ /tmp

Innymi słowy, jeśli wywołam katalog jako aplikację, to chcę ustawić ten katalog jako działający.

Vladimir
źródło
9
Czy to musi być bash? zsh może to zrobić ( autocd)
Michael Mrozek
1
Nie, nie, nie, potrzebuję rozwiązania w bash =) To jest główny wymóg, ponieważ w niektórych instytucjach naukowych w mroźnej Rosji są relikwie z jedynie bash jako językiem skryptowym;)
Vladimir
Ilość pisania zapisanego przez nie wpisanie „cd” prawdopodobnie zostanie zrównoważona przez brak inteligentnego domyślnego autouzupełniania ścieżek. Również ta metoda zmiany katalogów, tak często jak zmienia się katalogi, jest nieco przerażająca, ponieważ przypadkowo uruchomione (potencjalnie złośliwe) programy (które uważasz za katalog) stają się bardzo prawdopodobne.
michael,
Działa dla mnie w ZSH
ishidex2

Odpowiedzi:

36

W bash istnieje również autocdopcja. Możesz go włączyć, używając shopt -s autocd:

pbm@tauri ~ $ shopt -s autocd
pbm@tauri ~ $ django # Now just type this
cd ./django    <- it's done automatically
pbm@tauri ~/django $
pbm
źródło
2
Moja ulubiona nowa funkcja w bash 4 do użytku interaktywnego. (W przypadku skryptów **.) Niestety nie ma go w starszych wersjach.
Gilles „SO- przestań być zły”
0

Tak sobie wyobrażam. Ubuntu ma pewien mechanizm typu catch-all. Po uruchomieniu polecenia, którego nie ma w systemie, czasami pojawia się komunikat:

Nie znaleziono polecenia „foo”, czy miałeś na myśli: ...

Założę się, że możesz przejąć cokolwiek to jest i dodać czek, aby zobaczyć, czy dany katalog. Prawdopodobnie warto zadać kolejne pytanie z pytaniem, co to robi.

EDYCJA: Znaleziono: https://wiki.ubuntu.com/CommandNotFoundMagic

Shawn J. Goff
źródło
Tak, tego można by się naiwnie spodziewać - jednak bash jest mądrzejszy od nas i nawet nie wywołuje
komendy command_not_found_handle
Po kilku badaniach znalazłem małą łatkę ( mail-archive.com/[email protected]/msg06761.html ), która może to naprawić. Niestety, ta łatka jest nieoficjalna, więc nie można jej było używać ze standardową wersją bash dostarczoną z Ubuntu.
Vladimir