Käytän Linux Mintia. Kirjautumistunnukseni (cat /etc/passwd | grep myUserName
) on bash.
Kun olen käynnistänyt graafisen työpöytäympäristön ja suorittanut siitä pääteemulaattorin, huomaan, että .bash_profile
ei ole peräisin (ympäristömuuttujia, jotka ovat export
ed ovat määrittämättömiä). Mutta jos kirjaudun sisään tekstikonsolista ( ctrl + alt + F1 ) tai suoritan manuaalisesti bash -l
pääteemulaattorista, .bash_profile
toimii hyvin.
Olenko väärässä, kun luulen, että .bash_profile
tulee hankkia, kun X käynnistyy, ja kaikkien export
”muunnelmien tulisi olla käytettävissä päätelaitteessa, käynnissä X: stä?
PS Kaikkien sijoittaminen osioon .bashrc
ja hankinta kohteesta .bash_profile
ei ole hyvä idea ( https://stackoverflow.com/questions/902946/ ): ympäristöasiat tulisi hankkia vain kerran.
Vastaa
Bash lukee tiedoston ~/.bash_profile
, kun se on kirjautumiskuori. Tämän saat, kun kirjaudut sisään tekstitilassa.
Kun kirjaudut sisään X: ään, /bin/sh
suorittaa käynnistysskriptit. Ubuntu ja Mint, /bin/sh
on viiva , ei bash. Viivalla ja bashilla on samat perusominaisuudet, mutta viiva tarttuu nämä ydinominaisuudet ollakseen nopeita ja pieniä, kun taas bash lisää paljon ominaisuuksia kustannuksella vaatia enemmän resursseja. On tavallista käyttää viivaa komentosarjoissa, jotka eivät tarvitse lisäominaisuuksia ja bashia interaktiiviseen käyttöön (vaikka zsh sisältää paljon mukavampia ominaisuuksia ).
Useimmat näyttöyhdistelmät manager (ohjelma, johon kirjoitat käyttäjänimesi ja salasanasi) ja työpöytäympäristö lukevat ~/.profile
sisäänkirjautumisskripteistä kohdassa /etc/X11/Xsession
, /usr/bin/lightdm-session
, /etc/gdm/Xsession
tai kumpi soveltuu. Joten laita ympäristömuuttujien määritelmät kohtaan ~/.profile
. Varmista, että käytät vain syntaksia, jota viiva tukee.
Joten mitä sinun pitäisi laittaa minne?
-
Hyvä
.bash_profile
lataa.profile
ja lataa.bashrc
, jos kuori on vuorovaikutteinen.. ~/.profile if [[ $- == *i* ]]; then . ~/.bashrc; fi
-
Laita kohtaan
.profile
ympäristömuuttujien määritykset ja muut istunnon asetukset, kutenulimit
. - Laita kohtaan
.bashrc
bash-vuorovaikutteiset asetukset, kuten aliakset, toiminnot, täydennys, näppäinsidokset (joita ei ole t.inputrc
),…
Katso myös Ero sisäänkirjautumisen ja ei-kirjautumisen kuoren välillä? ja Vaihtoehto .bashrc: lle .
Kommentit
- monia asioita on opittu yhdestä vastauksesta: )
- jopa .profile ei toimi ' t Debian 10: ssä " Buster ", vain .bashrc wor ks
Vastaus
.bash_profile
on lyödä. Ei ole olemassa standardia, joka valtuuttaisi X: n hankkimaan .bash_profile
.
Ajattelet pikemminkin .profile
. Alun perin se oli bourne-kuoren (sh) käynnistysasetustiedosto. Nykyään monien jakelujen työpöytäympäristö on määritetty lähteeksi .profile
. Huomaa, että tämä ei myöskään ole standardi, mutta se näyttää olevan käytäntö.
Debian käytti lähdettä .profile
graafisella sisäänkirjautumisella ( wiki-sivu vuodesta 2013 ) nyt se ei” t ( wiki-sivu vuodesta 2016 ).
Arch-lähteet .xprofile
graafisella sisäänkirjautumisella ( wiki-sivu vuodesta 2013 ).
Ubuntu käytti aikanaan lannistamaan .profile
( wiki -sivua vuodesta 2013 ), nyt se ei enää lannista ( wiki -sivu vuodesta 2016 ).
Mitä tulee toiseen kysymykseesi: Miksi ~ / .bash_profile ei toimi? odotettu käyttäytyminen.
Lyhyesti sanottuna käyttäytyminen on seuraava:
- bash aloitettiin interaktiivisena kirjautumissuojana: lukee
~/.profile
- bash alkoi vuorovaikutteisena ei-kirjautumiskoodina: lukee
~/.bashrc
Lisätietoja on vastauksessani samanlainen ar kysymys askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc/132319#132319
kommentit
- Osa tästä on oikein, mutta” lue aina
~/.bashrc
”on huono neuvo: sinun tulisi lukea vain.bashrc
interaktiivisesta kuoresta .' Olet menettänyt ydinongelman tässä, että kun kirjaudutaan sisään X: ään, ei ole bash-kirjautumisilmentymää (useimmissa näytönhallinta- / työpöytäympäristöyhdistelmissä, mukaan lukien ilmeisesti AntonioK ' s). - Kiitos palautteestasi. Toivon, että päivitin vastaukseni riittävän hyvin valitusten ratkaisemiseksi. Mitä tulee neuvonii " lukemaan aina
.bashrc
", tarkoitin aina vuorovaikutteista kuorta . Olen selventänyt sitä osaa. Toivon, että se ei ole enää harhaanjohtava. - " Ubuntu erityisesti estää
.profile
( linkki ) " Wiki suositteli kerran (järjetöntä) sitä; että ' on korjattu. (Huomautus/etc/profile
ei ole suositeltavaa järjestelmäkohtaisissa tehtävissä, mieluummin lisäämällä komentosarjoja/etc/profile.d
.) Käyttäjäkohtainen.profile
-tiedostot ovat nyt yksi suositelluista tavoista asettaa käyttäjäkohtaisia ympäristömuuttujia: " Sopivat tiedostot ympäristömuuttujien asetuksiin, joiden tulisi vaikuttaa vain tiettyyn käyttäjään ( eivätkä koko järjestelmä) ovat ~ / .pam_environment ja ~ / .profile . " - Linkitetty sivu Debianista määrittää, että Debian ei lue
~/.profile
graafista kirjautumista varten ja~/.xsessionrc
pitäisi olla käytetään sen sijaan. - kiitos huomaamastasi. wiki-sivu päivitettiin. linkin versioihin sellaisina kuin ne olivat vastauksen aikaan.
vastaus
Pari ongelmaa syntyy, kun yritetään ladata / source ~ / .profile-tiedosto uudelleen. [Tämä viittaa Ubuntu linuxiin – joissakin tapauksissa komentojen yksityiskohdat ovat erilaiset]
- Käytätkö tätä suoraan terminaalissa vai komentosarjassa?
- Kuinka suoritat tämän komentosarjassa?
Mainos. 1)
Tämän suorittaminen suoraan terminaalissa tarkoittaa, että alikuorta ei luoda. Joten voit käyttää joko kahta komentoa:
source ~/.bash_profile
tai
. ~/.bash_profile
Molemmissa tapauksissa tämä päivittää ympäristön .profile-tiedoston sisällöllä.
Ad 2) Voit aloittaa minkä tahansa bash-komentosarjan joko soittamalla
sh myscript.sh
tai
. myscript.sh
Ensimmäisessä tapauksessa tämä luo alikuoren, joka ei vaikuta järjestelmäsi ja ne näkyvät vain alikuoriprosessille. Subhell-komennon lopettamisen jälkeen mitään vientiä jne. Ei käytetä. TÄMÄ on yleinen virhe ja aiheuttaa paljon kehittäjiä menettämään paljon aikaa.
Jotta komentosarjassa tehdyt muutokset vaikuttavat globaali ympäristö, jonka komentosarja on suoritettava
.myscript.sh
-komennolla.
Varmistaaksesi, että komentosarjaa ei suoriteta sisään voit käyttää tätä toimintoa. (Jälleen esimerkki koskee Ubuntu-kuorta)
#/bin/bash preventSubshell(){ if [[ $_ != $0 ]] then echo "Script is being sourced" else echo "Script is a subshell - please run the script by invoking . script.sh command"; exit 1; fi }
Toivon, että tämä poistaa joitain yleisiä väärinkäsityksiä! : D Onnea!
Vastaa
Kysymyksessäsi viitat https://stackoverflow.com/questions/902946/ suositukseksi olla lähettämättä, kun hyväksytty vastaus määrää
- Laita PATH-asetukseni .profile-tiedostoon (koska käytän joskus muita kuoria)
- Laita Bash-aliakseni ja -funktioni omaan. bashrc-tiedosto
Käytä sitten tätä [MUOKATTU: koodinpätkä-kommentit]:
.bash_profile
:#!/bin/bash # echo "Loading ${HOME}/.bash_profile" source ~/.profile # Get the paths source ~/.bashrc # get aliases
Laittamalla kaikki kohtaan .profile
ei toimi minulle Linux Mintissa. .bashrc
-toiminnon käyttö toimi hyvin.
Vastaus
Yksinkertainen ratkaisu on pääte kirjautumispäätteen. Gnome-päätelaitteessa oletusprofiilin kohdassa ”Laatta ja komento” voit valita valintaruudun ”Suorita komento kirjautumiskuorena”. Tämä artikkeli selittää kirjautumistunnuksen ja ei-välisen eron.