Jeśli użyję wbudowanego w cd polecenia „cd” BASH, wypisuje on dodatkowe rzeczy na standardowe wyjście, ale tylko wtedy, gdy zostanie potokowane, np. Mniej.
$ echo `cd .`
# The output is a single newline, appended by echo.
$ echo `cd .` | less
# less displays:
ESC]2;my.hostname.com - tmp/testenv^G
(END)
Co się tam dzieje? To zachowanie nie jest udokumentowane na stronie podręcznika bash dla cd. Oczywiście uruchamianie po prostu „cd” w podstawianiu poleceń jest głupie, ale coś w tym stylu
NEWDIR=`cd mypath; pwd`
może być przydatne.
Rozwiązałem to, używając
NEWVAR=`cd mypath > /dev/null 2>&1; pwd`
ale nadal chcę wiedzieć, co się dzieje.
Wersja Bash: GNU bash, wersja 3.2.25 (1) -release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.
Distro: Scientific Linux SL wersja 5.5 (Boron)
type cd
, wynik powinien być cd is a shell builtin
. Upewnić się echo `builtin cd .` | less
powoduje to samo. Wymusza użycie wbudowanego polecenia powłoki. Nie można repro, bash 3.2.48 (1) na OS X.
command
omija użycie wbudowanego basha, ale zamiast tego wykonuje program zwrócony z which cd
.
cd
wypisz prawdziwą ścieżkę. A może zdefiniowałeś Alias dlacd
?