Jak radzić sobie z przestrzenią podczas ustawiania zmiennej $ PATH

11

Chcę dodać sublime lib do mojej ścieżki, ale ma w nim spację.

Próbowałem tego, co oczywiste, jakbyś nawigował po terminalu ( na przykład /Applications/Sublime\ Text\ 2.app/Contents )

export PATH="/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl:$PATH"

Ale wciąż dostaję błąd

/Applications/Sublime: No such file or directory

Mógłbym zmienić jego nazwę, ale jestem ciekawy, jak go rozwiązać. Używam basha.

Shawn Vader
źródło
próbować export PATH='/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH? Czy to jest nowa linia?
demure
Nie, to nie jest nowa linia, która wychodzi po prostu w ten sposób, kiedy ją wkleiłem. Twoja sugestia nie pomogła i zabiła moją ścieżkę, więc nie mogłem użyć vi, musiałem przełączyć się na inną powłokę, aby zmienić.
Shawn Vader
1
sugestia demure powinna to zrobić, ale użyj podwójnych cudzysłowów: export PATH="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH", w przeciwnym razie $ PATH nie zostanie rozwinięty.
jaume
Oryginalnie miałem to jako podwójne cytaty, ale w .bashrc wciąż go to nie lubiło.
Shawn Vader
Czy możesz być bardziej precyzyjny? Co rozumiesz przez „to się nie podobało”? Czy masz błąd (który)? Albo po prostu nie działa?
jaume

Odpowiedzi:

12

Użyj odwrotnego ukośnika lub cudzysłowu, a nie obu. Umieszczasz sekwencję odwrotnego ukośnika w PATH wartość.

export PATH="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH"

lub

export PATH=/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl:$PATH

Pamiętaj, aby nie owijać linii: muszą to być spacje, a nie znaki nowej linii.

Zauważ, że jeśli widzisz błąd podobny do tego /Applications/Sublime: No such file or directory od export PATH=… W tym wierszu występuje błąd składniowy, na przykład spacja po znaku równości: przypisanie nie próbuje wyszukać katalogu. Jeśli błąd wystąpi później, nie jest to spowodowane wartością PATH, a jeśli tak, to tylko bardzo pośrednio: w przypadku wpisów w $PATH nie istnieje, a nieistniejący katalog nie prowadzi do komunikatu o błędzie.

Gilles
źródło
3

Aby to rozwiązać, włączyłem dowiązanie symboliczne

ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" /usr/local/sublime/bin/subl

Następnie dodałem go do mojej ścieżki, używając vi na ~. / Bashrc

export PATH="/usr/local/sublime/bin/:$PATH"

Pamiętaj, aby pobrać plik .bashrc, aby odebrać zmiany

source ~/.bashrc
Shawn Vader
źródło
3

Jeśli ścieżka jest ustawiona prawidłowo w .bash_profile, czy z podwójnymi cudzysłowami lub ukośnikiem odwrotnym i ma w nim spacje, musisz wywołać zmienne z podwójnymi cudzysłowami .

Na przykład, jeśli .bash_profile jest ustawiony jak poniżej:

export SUBLIMEPATH="/Applications/Sublime Text 2.app/Contents"
export PATH=$PATH:$SUBLIMEPATH/SharedSupport/bin/subl

ty żargon robić cd $SUBLIMEPATH aby zmienić bieżący katalog, otrzymasz No such file or directory błąd. Ale z podwójnymi cudzysłowami, takimi jak cd "$SUBLIMEPATH" możesz.

Mam nadzieję, że coś pomoże.

KEINOS
źródło
1

To nie odpowiada na pytanie. Jednak adresuje się go tak, jak w jednej z odpowiedzi, i omawia podobną procedurę.

Możliwe jest również utworzenie aliasu dla Sublime Text przez edycję .bash_profile lub .bashrc (cokolwiek jest plikiem konfiguracyjnym BASH w twoim katalogu domowym).

alias sublime="/Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text"

W tym celu konieczne jest użycie odwrotnych ukośników i cudzysłowów . Zwróć uwagę, że jest to zupełnie inna sytuacja niż w przypadku eksportu PATH, jak wspomniano powyżej, ponieważ ma sens tylko jedno lub drugie, ale nie obie.

Zauważ również, że nie jest konieczne tworzenie najpierw dowiązania symbolicznego, jak podaje oficjalna dokumentacja Sublime i wiele innych źródeł. Ta odpowiedź na StackOverflow robi to dobrze.

roomwithaview
źródło