Dla tych, którzy nie mają pojęcia, czym jest Fish: http://fishshell.com/
Podobnie, jeśli nie jesteś zaznajomiony ze środowiskiem kodowania Go i nadal chcesz spróbować rozwiązać tę małą zagadkę, oto kilka informacji: http://golang.org/doc/code.html
W każdym razie, próbuję skonfigurować dev-lang. środowisko na nowej maszynie, gdzie próbuję Fisha.
Więc mam $GOPATH
Ustawić /home/<me>/workspace/go-workspace
zarówno bash
i fish
. Oznacza to, że go
narzędzie oczekuje a bin
, pkg
, i src
pod tym katalogiem. Które tam jest.
Jednak pisanie go get
będąc w katalogu z jakimś kodem (który normalnie pobierałby zależności), uzyskuje
package code.google.com/p/go.crypto/openpgp: cannot download, $GOPATH not set. For more details see: go help gopath
package code.google.com/p/go.crypto/openpgp/armor: cannot download, $GOPATH not set. For more details see: go help gopath
package code.google.com/p/go.crypto/ssh: cannot download, $GOPATH not set. For more details see: go help gopath
package github.com/codegangsta/cli: cannot download, $GOPATH not set. For more details see: go help gopath
package github.com/oleiade/reflections: cannot download, $GOPATH not set. For more details see: go help gopath
package launchpad.net/goamz/aws: cannot download, $GOPATH not set. For more details see: go help gopath
package launchpad.net/goamz/s3: cannot download, $GOPATH not set. For more details see: go help gopath
Wiem, że to absolutnie fałszywe, bo mogę biegać echo $GOPATH
i wyskakuje wartość, którą ustawiłem.
Potem dziwnie, jeśli uruchomię to samo polecenie bash
z tym samym $GOPATH
ustaw, po prostu działa.
Czy ktoś może mi powiedzieć dlaczego.
Lub, bardziej ogólnie, czy możesz mi powiedzieć, dlaczego program wykrywa zmienną środowiskową w jednej powłoce, ale nie w innej?
źródło
-x
to, czego mi brakowało. D'oh.-g
modyfikator, jak wset -gx GOPATH <whatever>
Nie wszystkie zmienne powłoki są zmiennymi środowiskowymi. W
bash
, musiałbyśexport
zmienna, która ma stać się zmienną środowiskową w procesach potomnych (jeśli ta zmienna nie była już zmienną środowiskową). To znaczy, zakładającFOO
nie jest już zdefiniowane, a następnie po prostu wykonywaneFOO=bar
nie spowoduje zmiennejFOO
być widocznym w środowisku procesu dziecięcego. Będziesz musiał to śledzićexport FOO
lub możesz zrobić to wszystko narazexport FOO=bar
.Zakładam, że dzieje się coś podobnego
fish
, gdzie musisz miećGOPATH
zdefiniowany po prostu jako zmienna powłoki, a nie jako zmienna powłoki eksportowana również do środowiska.źródło