Vraag Wat is het verschil tussen een 'Inlog' en een 'Interactieve' bash-shell


Wat is het verschil tussen een bash-shell 'Login' en een 'Interactive'? Ik heb hieronder Wikipedia geciteerd, maar kan iemand een beter antwoord geven?

EDIT: dit is een communitywiki dus misschien eerder dan te stemmen om te sluiten, zou je voorbeelden kunnen geven van welke situaties oproepen voor welk type $ SHELL

Opstartscripts

Wanneer Bash start, voert het de   commando's in verschillende soorten   scripts.

Wanneer Bash wordt aangeroepen als een interactief   login shell, het leest eerst en   voert opdrachten uit het bestand uit   / etc / profile, als dat bestand bestaat.   Na het lezen van dat bestand, zoekt het ernaar   ~ / .bash_profile, ~ / .bash_login, en   ~ / .profile, in die volgorde, en leest   en voert opdrachten uit vanaf de eerste   een die bestaat en leesbaar is.

Wanneer een login-shell wordt afgesloten, leest Bash   en voert opdrachten uit het bestand uit   ~ / .bash_logout, als deze bestaat.

Wanneer een interactieve shell dat niet is   een login-shell is gestart, zegt Bash   en voert commando's uit van ~ / .bashrc,   als dat bestand bestaat. Dit kan zijn   geremd door de --norc optie te gebruiken.   De optie --rcfile file forceert   Bash om opdrachten te lezen en uit te voeren   bestand in plaats van ~ / .bashrc.


46


oorsprong


Ik heb de vraag bewerkt om meer in de half verschafte siteregels te passen. Ik denk niet dat ik ooit de wens zal begrijpen om nuttige informatie te verwijderen ... - Gareth
Waarom stemmen mensen op deze vraag? Lijkt me dat volkomen legitiem? - duffbeer703
Ugh, haal het antwoord uit je vraag en post het als een antwoord. Het is OK om je eigen vraag te beantwoorden. - derobert
Het is een zeer geldige vraag omdat het onderscheid verwarrend is. Houd er bijvoorbeeld rekening mee dat wanneer u zich aanmeldt bij een grafische omgeving via xdm en xterm uitvoert, u een interactieve shell krijgt en de opstartbestanden van de login-shell niet worden uitgevoerd. - pjc50


antwoorden:


In de profielbestanden van je login-shell kun je een aantal dingen instellen die je tijdens je sessie zult gebruiken en die je maar één keer hoeft te doen. Enige ideeën:

  • maak een tijdelijk bestand met het IP-adres waarmee u verbinding hebt gemaakt, later kunt u dit opnemen in sommige scripts die firewallregels instellen.
  • voer ssh-agent uit, vraag naar uw SSH-sleutels en sla de omgevingsvariabelen voor SSH-agents op in een bestand.
  • als dit een beperkte machine is en uw collega's op de hoogte willen zijn van elkaars aanmeldingen, schrijft u (1) berichten om hen te informeren over uw login.

In een niet-login shell-bestanden (.bashrc) zou je je shell moeten configureren:

  • Fancy prompt
  • stel aliassen in
  • stel geschiedenisopties in
  • definieer aangepaste shell-functies
  • export omgevingsvariabelen, (misschien PAGER, EDITOR als systeemomvattende instellingen zuigen)
  • laad ssh-agentvariabelen die zijn opgeslagen in .bash_profile

Meestal zou je opnemen .bashrc van .bash_profile met het volgende. Dan krijgt login shell al uw aanpassingen, en .bash_profile bestand hoeft geen dingen te dupliceren die al in de map staan .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc

16



Is een inlogshell de eerste die begint als je nieuw bent op de machine? Alle andere shells die u daarna opent, kunnen al dan niet interactief zijn. Een schaal die voor cron loopt? Lijkt niet interactief, maar is het inloggen? Wat als u niet op de machine zit? Dat zijn de vragen die onbeantwoord blijven - François Beausoleil
Nu, DAT is een antwoord dat ik kan begrijpen: linuxquestions.org/questions/linux-general-1/... - François Beausoleil