Próbuję skonfigurować coś na uruchamianym przeze mnie serwerze, kiedy tylko cd
w public_html
95% przypadków znajduję się w folderze, jest kilka poleceń, które zawsze uruchamiam, aby sprawdzić pewne rzeczy.
Czy w każdym razie mogę się podłączyć, cd
więc jeśli katalog to public_html
, to automatycznie uruchomi dla mnie polecenia?
Jeśli nie mogę się przyłączyć do cd
polecenia, czy mogę zrobić coś innego, aby osiągnąć wynik, którego szukam?
Używam CentOS 5.8.
bash
shell
cd-command
TMH
źródło
źródło
echo "Testing..."
tuż powyżej wyjścia if, ale nic. Czy muszę coś zrobić, aby zastosować te zmiany?. ~/.bash_profile
/bin/cd
w moim CentOS, więc to rozwiązanie może nie działaćcd -P public_html
albocd ~/public_html
czy ma nieoczekiwane zachowanie, jeśli nie możnacd
dopublic_html
.Za pomocą
ksh
lubbash
(lubzsh
):Z
zsh
:(
chpwd
To hak funkcja, która jest wywoływana, gdy zmienia bieżący katalog roboczy (w drodzecd
,pushd
,popd
...)).źródło
Zawijanie
cd
, istniejące polecenie, nie jest zalecane.Bardziej uniwersalnym rozwiązaniem byłoby zdefiniowanie niestandardowego
chpwd
haka w Bash. (Zgodnie z tagami tego pytania, zakładam, że używasz Bash)W Bash nie ma kompletnego systemu haczyków w porównaniu z innymi nowoczesnymi pociskami.
PROMPT_COMMAND
Zmienna jest używana jako funkcja hook, która jest równoważnaprecmd
hookowi w ZSH,fish_prompt
w Fish. Na razie ZSH jest jedyną znaną powłoką, która machpwd
wbudowany hak.chpwd
Hook in BashPodano sztuczkę, aby ustawić
chpwd
równoważny hak w Bash na podstawiePROMPT_COMMAND
.Ponieważ jesteśmy wykrywania
PWD
bezpośrednio zmianę, rozwiązanie współpracuje zcd
,pushd
orazpopd
.Uwaga : Główną różnicą między naszą
chpwd
implementacją w Bash achpwd
ZSH jest:PROMPT_COMMAND
nie jest obsługiwana w nieinteraktywnej powłoce Bash.Stosowanie
Źródło: Utwórz chpwd ekwiwalentny hak w Bashu z mojej treści.
Dla każdego, kto chce odpowiedzi na ZSH. Użyj
chpwd
haka w ZSH. Nie definiujchpwd()
funkcji bezpośrednio. Więcej szczegółów tutaj .źródło
Nie jestem ekspertem od bash, ale wziąłbym odpowiedź @ UVV i trochę ją zmodyfikowałem, aby to zrobiło:
public_html
, ja po prostu sprawdzić na jakimśhook-script
pliku w katalogu docelowym$1
, mówiącd_hook.sh
.hook-script
istnieje, uruchom go i przejdź docd
Wydaje się to bardziej ogólne, ponieważ wtedy możesz zastosować
cd
-hook do dowolnego katalogu, jeśli tak wybierzesz, po prostu dodając acd_hook.sh
do wspomnianego katalogu.źródło
cd
gdzieś, sprawdź.bashcd
plik i uruchom go, jeśli istnieje.Używanie potężnego podejścia zsh w bash:
Najpierw prosty sposób na przedłużenie bash:
~ / .runscripts
Uwzględnij w .bashrc:
Możesz utworzyć ~ / .bashrc.d / cdhook za pomocą:
Teraz możesz zmienić funkcję:
źródło