Avatar billede styless Nybegynder
22. april 2004 - 10:33 Der er 40 kommentarer og
2 løsninger

.bashrc virker ikke

Jeg har netop afsluttet min Gentoo installation. Jubii!
Jeg har dog et problem. For at gøre mit arbejde lettere har jeg i mine andre Unix miljøer (Red Hat, Fedora, Mandrake, Suse) oprettet nogle alias's i min root og andre brugeres .bashrc fil.
Da jeg ville rette i filen for root var filen der ikke og jeg oprettede den. Men det virker ikke. Jeg har logget ud og logget ind igen og jeg har sågar genstartet. Mangler jeg at tilføje noget i filen andet end mine alias's. Ellers skal jeg rette i BASH konfigurationen?
Avatar billede styless Nybegynder
22. april 2004 - 10:36 #1
Jeg har siddet og kigget nogle andres scripts igennem:

if [ -f /etc/bashrc ]; then
  . /etc/bashrc
fi

... står der i nogle af dem. Jeg synes scriptet ser lidt underligt ud OG bashrc findes heller ikke i min etc mappe ... ?
Avatar billede styless Nybegynder
22. april 2004 - 11:01 #2
Nogle andre har skrevet at der ikke er farver på. Her er der farver på. Så den må vel finde /bin/bash?

Når jeg skriver en kommando så siger den -bash: ll: command not found.
Mit
Avatar billede lassebm Nybegynder
22. april 2004 - 11:17 #3
du skal i hvert fald starte filen med
#!/bin/bash

Hvordan ser din fil ellers ud ?
Avatar billede styless Nybegynder
22. april 2004 - 11:47 #4
#!/bin/bash

if [ -f /etc/bashrc ]; then
  . /etc/bashrc
fi

og så mine alias's ...
Avatar billede styless Nybegynder
22. april 2004 - 11:50 #5
Jeg har lige prøvet at oprette en bruger "fisk". Når jeg logger ind med denne så skriver den:

No directory /home/fisk!
Logging in with home = "/".

Jeg har altid været vant til den selv oprettede home mappen for brugeren. Men det gør den måske kun på de andre systemer som jeg har prøvet? Jeg har selv nu specificeret home mappen og den logger ind uden fejlen nu. Jeg har også oprettet en .bashrc for brugeren men det virker stadig ikke ...
Avatar billede strych9 Praktikant
22. april 2004 - 11:51 #6
Så vidt jeg husker er den eneste fil som bash er absolut tvunget til at køre den der hedder /etc/.profile
Du kan uden problemer kalde ~/.bashrc fra den.
Avatar billede styless Nybegynder
22. april 2004 - 11:55 #7
Kan man så tvinge "/etc/.profile" - bash til at køre .bashrc for alle brugere?
Avatar billede strych9 Praktikant
22. april 2004 - 11:57 #8
yesh.. tilde (~) betyder brugerens homedir. Så hvis du logger ind som root så er ~/.bashrc det samme som /root/.bashrc og hvis du logger ind som fisk så er det det samme som /home/fisk/.bashrc
Avatar billede styless Nybegynder
22. april 2004 - 11:59 #9
Du vil altså have mig til at tilføje noget lign.:

sh ~/.bashrc

til /etc/profile?
Avatar billede strych9 Praktikant
22. april 2004 - 12:00 #10
Jeg har ikke lige noget gentoo ved hånden i dag ellers, men du vil se at i /etc/.profile sætter de umask og lignende ting.
Jeg tror iøvrigt at udskiftning af baselayout pakken godt kan finde på at udskifte .profile så du ved det.
Avatar billede strych9 Praktikant
22. april 2004 - 12:04 #11
Prøv at læse de kommentarer der står i .profile først. Bemærk . iøvrigt
cat /etc/.profile
og
cat /etc/profile

Så kan du sikkert se hvordan det hænger sammen.
For at teste en ny profile behøver du iøvrigt ikke at genstarte eller noget.
"env-update && source /etc/profile" er nok.
Avatar billede styless Nybegynder
22. april 2004 - 12:06 #12
Har har tilføjet den til profile. Men når jeg så starter den op siger den

-bash: /root/.bashrc: Permission denied

...
Avatar billede strych9 Praktikant
22. april 2004 - 12:06 #13
chmod 755 /root/.bashrc
Avatar billede styless Nybegynder
22. april 2004 - 12:07 #14
Der er ingen /etc/.profile
Der er kun en /etc/profile
Avatar billede styless Nybegynder
22. april 2004 - 12:07 #15
Jo men når jeg logger ind så burde root vel have adgang til hvad der ligger i hans mappe. Det er jo også ham jeg har oprettet filen med?
Avatar billede styless Nybegynder
22. april 2004 - 12:09 #16
Ja okay den har ikke X / show rettighed.
Avatar billede styless Nybegynder
22. april 2004 - 12:11 #17
execute hedder den ... /my bad :)
Avatar billede styless Nybegynder
22. april 2004 - 12:17 #18
Virker dog stadig ikke ... :S
Avatar billede Slettet bruger
22. april 2004 - 16:04 #19
Hvis du skrev sh ~/.bashrc, så er det en undershell, der kører din .bashrc. De aliaser, den laver forsvinder igen lige så snart den undershell slutter. Du skal bruge . ~/.bashrc
Avatar billede strych9 Praktikant
22. april 2004 - 17:57 #20
sandbox-> Så "sh" virker nøjagtigt ligesom "exec"??
Avatar billede odysseus Nybegynder
22. april 2004 - 18:28 #21
skriv dem ind i .bash_profile i stedet
Avatar billede Slettet bruger
23. april 2004 - 01:49 #22
strych9-> Nej, ikke helt.

"sh" er navnet på en shell. På de fleste Linuxinstallationer er det /bin/sh, og den er tit bare en genvej til /bin/bash, men den kan også være en genvej til /bin/ash eller /bin/dash eller endda en selvstændig shell, så når du starter et script med "sh" kan du faktisk ikke være sikker på, at det er bash, der vil køre det. Når du starter et script med "sh scriptnavn", startes en ny udgave af sh-shellen, som så fortolker scriptet. Når scriptet er færdigt, bliver den nye shell afsluttet, og kontrollen gives tilbage til det sted hvorfra "sh scriptnavn" blev kørt.

"exec" er navnet på en kommando, som er indbygget i f.eks. bash. Den betyder: "erstat den kørende shell med den nye kommando". Det vil sige, at din eksisterende shell bliver afsluttet, når du starter et script med exec. Hvis du starter et script med exec fra en kommandolinie, så skal du være forberedt på, at du skal logge ind igen bagefter.

"." er en anden indbygget kommando i shellen. Den betyder: "kør scriptet som om det stod lige her". Den svarer lidt til mange andre sprogs "include"-funktioner. Det vil sige, at kommandoerne i scriptet bliver kørt af den samme shell, som kaldte scriptet. Dette må ikke forveksles med at skrive "./scriptnavn".

For at afprøve forskellene, så lav to små scripts, som vi kalder hovedscript og underscript

hovedscript:
#!/bin/bash
MINVAR="hovedscript"
echo "MINVAR er $MINVAR \n"
sh ~/underscript
echo "Tilbage i hovedscript. MINVAR er nu $MINVAR \n"

underscript:
#!/bin/bash
echo "Vi er i underscript. MINVAR er $MINVAR \n"
MINVAR="underscript"
echo "I underscriptet er MINVAR nu $MINVAR \n"

Gør det to filer eksekverbare med: chmod u+x hovedscript underscript

Kør hovedscript med: ./hovedscript
Se på udskriften.
Ret "sh ~/underscript"-linien til ". ~/underscript" og kør igen. Og prøv til sidst med "exec ~/underscript". Læg mærke til hvilke linier der bliver udskrevet (og især IKKE udskrevet) og hvad variablen indeholder de forskellige steder.
Avatar billede styless Nybegynder
23. april 2004 - 09:30 #23
Lige nu står den i filen som ~/.bashrc og har jeg også prøvet at lave en ./ og en sh og en exec men som du siger vil det ikke virke og det virker heller ikke med ~/.bashrc.

Jeg har prøvet at ligge dem ind i .bash_profile i brugeren (root) mappe men det virker stadig heller ikke.

Hvis jeg bare i konsollen skriver alias cls='clear' f.eks. virker det fint. Men lige så snart jeg ligger dem i et script virker det ikke lige meget hvordan jeg starter scriptet.

Jeg har i /etc/profile også prøvet at lave en: ehco ~ for at se hvilken mappe den brugte og den viste rigtig nemlig /root eller /home/fisk eller /home/torsk.

Er min bash totalt f*****? Jeg har prøvet at lave en emerge --search "bash" som fortæller mig at den nyeste version af bash er installeret. Hvis min bash er f***** ville det så skade mit system at emerge den (igen)?
Avatar billede strych9 Praktikant
23. april 2004 - 12:18 #24
sandbox-> Tusind tak for afklaringen. Det var pænt af dig =)

styless-> Jeg håber du forstår at der er forskel mellem "./" og ". /"
Det kan ikke skade at emerge bash igen, men det er en helt ny installation og der skulle ikke være noget galt..
Avatar billede styless Nybegynder
23. april 2004 - 12:44 #25
strych9 >> Ja jeg forstår godt forskellen. Der er mellemrum så den vil ikke virke. Jeg er altså ikke helt dum :)
Avatar billede styless Nybegynder
23. april 2004 - 12:46 #26
Medmindre sandbox har noget at indsige eller en en god forklaring/kommentar eller anden bruger har så prøver jeg at emerge bash igen. Det er sku da lamt at jeg ikke kan køre et script når det virker når jeg indtaster kommandoen manuelt.
Avatar billede Slettet bruger
23. april 2004 - 13:32 #27
Det burde ikke kunne skade at installere den igen, men jeg tvivler også på, at det vil nytte.

Hvordan starter du din shell? Der er nemlig forskel på, om man starter en xterm eller logger ind på konsollen. Får du nogen fejlbeskeder?

I stedet for . kan man forresten også skrive source, så er det lettere at se forskel på det to næsten ens metoder, som opfører sig meget forskelligt.

"./.bashrc" og "~/.bashrc" gør begge det samme, og de kan sammenlignes med "bash .bashrc".

I dette tilfælde skal du bruge ". .bashrc" eller ". ~/.bashrc".

Bemærk iøvrigt, at det er forskelligt, hvornår bash kører /etc/profile og ~/.bash_profile og hvornår den kører /etc/bash.bashrc og ~/.bashrc. Du kan prøve at sætte nogle "echo 'filnavn'"-kommandoer ind i dem, så kan du se hvilke der reelt bliver kørt.
Avatar billede styless Nybegynder
23. april 2004 - 13:40 #28
sandbox >> Jeg er ikke inde i et GUI-miljø jeg arbejder på det der skal blive til en server og har derfor ikke nogen GUI. Så jeg bruger ikke xterm. Jeg starter ikke selv bash på nogen måde. Den starter vel som Gentoo har bedt den om :)
Avatar billede Slettet bruger
23. april 2004 - 13:49 #29
Fint, så ved vi, at det er en login-shell. Så vil følgende kommentar fra min ~/.bashrc og ~/.bash_profile måske give et tip:

# ~/.bashrc: executed by bash(1) for non-login shells.
# ~/.bash_profile: executed by bash(1) for login shells.

Du skal altså bruge .bash_profile (som odysseus sagde).
Avatar billede styless Nybegynder
23. april 2004 - 13:52 #30
Jeg har også prøvet at ligge dem ind i .bash_profile ... Virker stadig ikke :) Det skriver jeg også i:

Kommentar: styless
23/04-2004 09:30:59

:)
Avatar billede styless Nybegynder
23. april 2004 - 13:56 #31
Den kommentar står heller ikke i filerne ...
Avatar billede Slettet bruger
23. april 2004 - 13:58 #32
Virker det, hvis du manuelt skriver:

. .bash_profile

(Forresten behøver hverken .bashrc eller .bash_profile at have executable sat, da de begge er beregnet til at skulle køres med .-kommandoen)
Avatar billede styless Nybegynder
23. april 2004 - 13:59 #33
Kan du ikke prøve at copy/waste en kopi af dine filer?
Avatar billede styless Nybegynder
23. april 2004 - 14:00 #34
sandbox >> ja det virker hvis jeg skriver sådan faktisk
Avatar billede Slettet bruger
23. april 2004 - 14:01 #35
Tjoh, men de er ganske uinteressante, da de bare indeholder standard-ting. Øjeblik, så kommer de.
Avatar billede Slettet bruger
23. april 2004 - 14:02 #36
# ~/.bash_profile: executed by bash(1) for login shells.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

umask 022

# the rest of this file is commented out.

# include .bashrc if it exists

#if [ -f ~/.bashrc ]; then
#    source ~/.bashrc
#fi

# set PATH so it includes user's private bin if it exists
#if [ -d ~/bin ] ; then
#    PATH=~/bin:"${PATH}"
#fi

# do the same with MANPATH
#if [ -d ~/man ]; then
#    MANPATH=~/man:"${MANPATH}"
#fi
Avatar billede Slettet bruger
23. april 2004 - 14:03 #37
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If running interactively, then:
if [ "$PS1" ]; then

    # don't put duplicate lines in the history. See bash(1) for more options
    # export HISTCONTROL=ignoredups

    # enable color support of ls and also add handy aliases
    eval `dircolors -b`
    alias ls='ls --color=auto'
    #alias dir='ls --color=auto --format=vertical'
    #alias vdir='ls --color=auto --format=long'

    # some more ls aliases
    #alias ll='ls -l'
    #alias la='ls -A'
    #alias l='ls -CF'

    # set a fancy prompt
    PS1='\u@\h:\w\$ '

    # If this is an xterm set the title to user@host:dir
    #case $TERM in
    #xterm*)
    #    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
    #    ;;
    #*)
    #    ;;
    #esac

    # enable programmable completion features (you don't need to enable
    # this, if it's already enabled in /etc/bash.bashrc).
    #if [ -f /etc/bash_completion ]; then
    #  . /etc/bash_completion
    #fi
fi
Avatar billede styless Nybegynder
23. april 2004 - 14:03 #38
Det virker nu :|

WTF?!
Avatar billede Slettet bruger
23. april 2004 - 14:06 #39
;-) Så får du ikke mine filer fra /etc, for de er også bare standard.

Hvirker det også, hvis du logger ud og logger ind igen?
Avatar billede styless Nybegynder
23. april 2004 - 14:11 #40
Ja både når jeg logger ind og ud og genstarter ...

Skummelt ... Jeg har gjort et eller andet og jeg ved ikke hvad :|
Avatar billede styless Nybegynder
23. april 2004 - 15:38 #41
Nå men det ser ud til at virke rigtig fint nu. Så hvis du også vil smide et svar sandbox.
Avatar billede Slettet bruger
23. april 2004 - 17:15 #42
Kommer her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester