Înțeleg diferența dintre Conectare interactivă și Non-login interactiv
Conform acestei postări excelente: Ordinea de încărcare a fișierelor de pornire Zsh/Bash (.bashrc, .zshrc etc.) avem următorul tabel
+----------------+-----------+-----------+------+
| |Interactiv|Interactiv|Script|
| |login |non-login | |
+----------------+-----------+-----------+------+
|/etc/profil | A | | |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc| | A | |
+----------------+-----------+-----------+------+
|~/.bashrc | | B | |
+----------------+-----------+-----------+------+
|~/.bash_profile | B1 | | |
+----------------+-----------+-----------+------+
|~/.bash_login | B2 | | |
+----------------+-----------+-----------+------+
|~/.profil | B3 | | |
+----------------+-----------+-----------+------+
|BASH_ENV | | | A |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
|~/.bash_logout | C | | |
+----------------+-----------+-----------+------+
Primul link se referă la această altă postare excelentă: Curățarea personalizărilor bash unde are la dispoziție o explicație excelentă despre Conectare interactivă și Non-login interactiv după cum urmează:
Un autentificare interactivă shell este un shell în care tastați, acesta este primul astfel de shell pe care îl executați pe mașină. De obicei, va trebui să vă conectați imediat înainte ca shell-ul să înceapă. De exemplu, atunci când trimiteți SSH la un sistem de la distanță și introduceți comenzi în acel sistem, introduceți într-un shell de conectare interactiv.
Un shell interactiv non-login este un nou shell început după ce v-ați autentificat deja; unul care nu necesită să vă conectați din nou. De exemplu, dacă deschideți o nouă fereastră de terminal în interfața grafică de utilizator și primiți un prompt shell, acesta este un shell interactiv non-login. Un alt exemplu de shell interactiv non-login ar fi un sub-shell pornit din interiorul unui editor de text; de exemplu, tastând :sh în vi.
Despre primul, practic se aplică obligatoriu în Ubuntu Server mediu - unde să lucrezi cu fiecare tty
este nevoie să faceți o autentificare, deci conform tabelului ~/.profil
este folosit (am confirmat că nu există nici ~/.bash_profile
nici ~/.bash_login
dosare). Se aplică pentru su - alt utilizator
(îi cere parola) și, prin urmare, a lui ~/.profil
fișierul este și el executat. Până aici sunt bine.
Despre acesta din urmă - motivul acestei postări - Ubuntu Desktop mediu, se aplică atunci când o nouă fereastră/terminal este deschisă cu o singură filă în mod implicit, deci conform tabelului ar trebui să fie executat /etc/bash.bashrc
și ~/.bashrc
dosare și nu cel .profil
fişier
Dar de ce dacă se execută în acea Terminal:
echo $JAVA_HOME
(definit la .profil
)
echo $M2_HOME
(definit la .profil
)
echo $GRADLE_HOME
(definit la .profil
)
care java
care mvn
care gradle
toate comenzile funcționează normal?
Același comportament pentru orice filă nouă (Ctrl + Shift + T
) în cadrul aceleiași ferestre și chiar și pentru o nouă fereastră de terminal cu din nou fila sa implicită unică
Am citit urmatoarea postare:
Și nu am setările menționate despre (al doilea este adaptat pentru Ubuntu Desktop 18:04):
- The
.bashrc
fișierele nu se referă sau nu fac sursă .profil
fişier
Editați | ×
--> Preferințe
--> Unamed
-> Fila de comandă
--> Rulați comanda ca shell de conectare
(este nebifat)