W mojej ~/.profile
mam ostatni blok, który powinien załadować mój osobisty w bin/ directory
ten sposób:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Ale najwyraźniej nie jest załadowany:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Dlaczego to nie działa? (Moja skorupa to bash).
Edycja dla Tiggera
echo $0 => bash
echo $HOME => /home/student
whoami => student
less /etc/*-release =>
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
.profile
można znaleźć na stronie askubuntu.com/questions/284640 .-x
flagi przekazanej do bash i sprawdzając, gdzie ŚCIEŻKA jest resetowana. Musiszexport PATH="$HOME/bin:$PATH"
także dostarczyć go do kolejnych procesów.Odpowiedzi:
Z góry
~/.profile
:Tak (jeśli używasz
bash
jako shell) Zgaduję, albo~/.bash_profile
czy~/.bash_login
jest w systemie. Wybierz jeden i edytuj go, aby obejmował:Następnie zapisz i
source ~/.bash_login
lub wyloguj się i zaloguj ponownie.Edytuj :
Mówisz to jedno
~/.bash_profile
i~/.bash_login
drugie brakuje w twoim$HOME
. Myślę, że musimy potwierdzić kilka rzeczy. Proszę zamieścić następujące wyniki w oryginalnym pytaniu:Edycja 2 :
Osobiście nie wiem, dlaczego
~/.profile
nie uwzględniono go w twojej sprawie na podstawie dostarczonych informacji i dokumentacji. Podczas testów zauważyłem, że mój~/.profile
skan jest skanowany, kiedy jestemssh
w środku, ale nie kiedy uruchamiam nowy terminal.Istnieje jednak proste rozwiązanie pozwalające
$HOME/bin
na włączenie się do interaktywnej powłoki. Edytuj (utwórz, jeśli nie jest obecny)~/.bashrc
i dodaj do niego następujący wiersz:Zapisz, wyloguj się i zaloguj ponownie lub
source ~/.bashrc
.export
Linia może zostać rozszerzony, aby sprawdzić, że$HOME/bin
istnieje, jeżeli chcesz z:Dlaczego
~/.bashrc
zamiast innego pliku? Osobiste preferencje i wydaje się również bardziej wiarygodne.źródło
~/.bash_profile
ani~/.bash_login
. U mnie~
są tylko.bash_history
i.bash_logout
(i oczywiście.profile
).~/.profile
jest pomijany.Te zasady w-sourcing plików Uruchamianie powłoki są złożone . Prawdopodobnie w konfiguracji
.profile
nie włącza się, gdy otwierasz nowy terminal w sesji X (spróbuj wstawićecho .profile
wnętrze.profile
i sprawdź, czy komunikat pojawia się po uruchomieniu powłoki).powinien ręcznie ponownie załadować profil.
Logowanie i wylogowanie z X również powinno spowodować
.profile
załadowanie.Alternatywnie, można zrobić
. $HOME/.profile
z.bashrc
(podczas korzystania straży zmiennej opartej o unikaniu podwójnego włączenia), aby upewnić się, że.profile
jest zawsze włączone przy każdym uruchomieniu powłoki.(Nie musisz tego robić,
export PATH
ponieważPATH
jest to już wyeksportowana zmienna, a modyfikacja jej wartości nie zmieni jejexport
statusu).źródło
[ -z "$has___profile" ] || return; has__profile=1
), więc nie otrzymuję nieskończonych pętli i oba.profile
i.bashrc
(tylko jeśli zdefiniowana jest wersja BASH_VERSION) bez względu na to, jak się tam dostałem.bash -l
załaduje.profile
(chyba że jakimś dziwnym konfiguracji). Ponadto PATH powinien być poprawnie ustawiony, gdy użytkownik się loguje. Oznacza to, że w używanym „menedżerze wyświetlania” (dm): gnome, KDE, xfce, lxde itp.Jeśli chcesz, aby
.profile
załadować wszystko, co potrzebne jest, aby uruchomić powłokę logowania:To powinno wystarczyć na trwającą sesję. Możesz porównać ŚCIEŻKĘ przed i po uruchomieniu bashu logowania, aby potwierdzić różnicę.
Aby uzyskać bardziej trwałe rozwiązanie, należy uruchomić powłokę logowania w pewnym momencie przed uruchomieniem terminala (konsoli). Logowanie jako określony użytkownik odbywa się na niektórych urządzeniach dm (menedżer wyświetlania) (gnome, kde, xfce, lxde itp.). Każda z nich powinna zmienić zmienną środowiskową PATH, aby dopasować ją do swoich potrzeb.
Na przykład w przypadku xfce rozwiązaniem jest zmiana
xinitrc
:W przypadku gnome wydaje się, że plik do zmiany to
~/.pam_environment
.W przypadku KDE postępuj zgodnie z tym przewodnikiem , aby utworzyć plik, możesz użyć tego kodu:
źródło