2010-10-12 13 views
9

Próbowałem ustawić kilka aliasów w moim pliku .bashrc. Ten ...Jak uciec spacji w aliasie bash?

export alias umusic="/Volumes/180 gram/Uncompressed/" 

... dostaje następujący błąd ...

-bash: cd: Volumes/180 /: Nie ma takiego pliku lub katalogu

. .. gdy próbuję "cd $ umusic".

Próbowałem różnych metod uniknięcia tego spacji w nazwie katalogu, bezskutecznie. (180 \ gram, 180% 20 gramów, pojedyncze cytaty, podwójne cudzysłowy, bez cudzysłowów.) Rozumiem, że najłatwiej jest zmienić nazwę katalogu na "180gram", ale chciałbym wiedzieć, jak rozwiązać ten konkretny problem.

Jestem na komputerze Mac, jeśli to robi jakąkolwiek różnicę.

Odpowiedz

14

Korzystanie z komendy export czyni umusic zmienna środowisko a nie alias. Komenda export eksportuje zmienne środowiskowe nazwane w pozostałej części wiersza polecenia, opcjonalnie z nowymi wartościami. Dlatego eksportuje zmienną środowiskową o nazwie alias (która prawdopodobnie nie jest ustawiona) i jedną o nazwie umusic.

Biorąc pod uwagę, że jesteś rozwija zmienną środowiskową, powłoka wykonuje następujące zmiany:

cd $umusic 
cd /Volumes/180 gram/Uncompressed/ 

który generuje błąd dostać ponieważ przestrzeń nie jest notowany. Jeśli zamiast tego zrobić:

cd "$umusic" 

następnie ekspansja jest

cd "/Volumes/180 gram/Uncompressed/" 

czyli co czekasz.

Jednak użycie zmiennej środowiskowej może być nadal zbyt trudne, ponieważ trzeba zacytować rozwinięcie. Zamiast tego, spróbuj to Alias:

alias umusic="cd '/Volumes/180 gram/Uncompressed'" 

który chcesz uruchomić z tylko

$ umusic 
$ pwd 
/Volumes/180 gram/Uncompressed 
+0

Dziękuję i powiązane pytanie: Myślałem aliasy miały służyć jako skróconych ścieżek plików. Czy można dodać polecenie w aliasie? – parisminton

+2

Alias ​​powłoki jest skróconą komendą; nie mają żadnego szczególnego połączenia ze ścieżkami plików (poza tym, że mogą zawierać ścieżki, jak sugeruje Greg). –

+0

Należy zauważyć, że technika aliasowa "alias umusic =" cd "/ Volumes/180 gram/Uncompressed" "uniemożliwia interpretację tyldy jako domu. Zamiast tyldy ('~ /') musisz użyć '/ home/yourUsername /', a ta technika działa świetnie. – cameronroytaylor