1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

Environment Variables ändern

    • Linux
  • TheButcher
  • 26. September 2005 um 12:51
  • Unerledigt
  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 26. September 2005 um 12:51
    • #1

    Hi!
    Ich will die Variable PATH ändern.
    Das ist leicht. Ich schreibe nur die Kommando:
    $ PATH=$PATH:/usr/local/pgsql/bin
    Jetzt habe ich die Variable geändert genau so wie ich will,
    aber nach dem neustarten des PCs ist diese Änderung verlohren
    gegangen :frowning_face: Kann mir jemmand sagen was ich tun kann?

  • Usher
    9
    Usher
    Mitglied
    Punkte
    830
    Beiträge
    149
    • 26. September 2005 um 12:54
    • #2

    Du machst die Änderung einfach in der Datei .bash_profile vom jeweiligen User. Diese Datei findest Du im Home-Verzeichnis des Users. Jedes Mal, wenn Du dich dann als der entsprechende User einloggst, werden die Befehle darin ausgeführt.

    Zitate, Aphorismen und Lebensweisheiten - Zitate - Sprüche - DNS Lookups mit Speed Anzeige - Newsletter Anmeldungen

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 26. September 2005 um 13:06
    • #3

    andere möglichkeit ist auch noch die '.profile', dort gehoerts aber nicht wirklich hin.
    gut ist auch '.bashrc' oder eben die globale '/etc/bash/bashrc'.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 26. September 2005 um 13:11
    • #4
    Zitat von Usher

    Du machst die Änderung einfach in der Datei .bash_profile vom jeweiligen User. Diese Datei findest Du im Home-Verzeichnis des Users. Jedes Mal, wenn Du dich dann als der entsprechende User einloggst, werden die Befehle darin ausgeführt.

    nach den ausführung der kommando "ls -lA" in /home/username
    finde ich nur das Datei .bash_history

  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 26. September 2005 um 13:33
    • #5
    Zitat von Kampi

    andere möglichkeit ist auch noch die '.profile', dort gehoerts aber nicht wirklich hin.
    gut ist auch '.bashrc' oder eben die globale '/etc/bash/bashrc'.

    '/etc/bash/bashrc' - das habe ich nicht :frowning_face:
    '.bashrc' - wo kann ich das finden?

    ich habe 'etc/bash.bashrc' meinst du das vielleicht?

  • buechsengustel
    8
    buechsengustel
    Mitglied
    Reaktionen
    1
    Punkte
    626
    Beiträge
    109
    • 26. September 2005 um 14:28
    • #6
    Zitat von TheButcher

    nach den ausführung der kommando "ls -lA" in /home/username
    finde ich nur das Datei .bash_history

    du kannst ~/.bash_profile einfach selber erstellen, genauso ~/.bashrc
    ich denke, das sollte funktionieren.

    throw away your television

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 26. September 2005 um 14:29
    • #7

    TheButcher:
    dann leg die '.bashrc' einfach an, ist ja nix dabei.
    wegen der /etc/bash/bashrc mach dir keine sorgen, das ist von distribution zu distribution verschieden. es wird bei dir eben die "/etc/bash.bashrc" sein...

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 26. September 2005 um 16:26
    • #8

    Ich find's überhaubt nicht, wo das Variable PATH ist :frowning_face:

    Hier ist der File

    # /etc/bash.bashrc for SuSE Linux
    #
    # PLEASE DO NOT CHANGE /etc/bash.bashrc There are chances that your changes
    # will be lost during system upgrades. Instead use /etc/bash.bashrc.local
    # for your local settings, favourite global aliases, VISUAL and EDITOR
    # variables, etc ...

    #
    # Check which shell is reading this file
    #
    if test -z "$is" ; then
    if test -f /proc/mounts ; then
    case "`/bin/ls -l /proc/$$/exe`" in
    */bash) is=bash ;;
    */rbash) is=bash ;;
    */ash) is=ash ;;
    */ksh) is=ksh ;;
    */zsh) is=zsh ;;
    */*) is=sh ;;
    esac
    else
    is=sh
    fi
    fi

    #
    # Colored file listings
    #
    if test -x /usr/bin/dircolors ; then
    #
    # set up the color-ls environment variables:
    #
    if test -f $HOME/.dir_colors ; then
    eval "`dircolors -b $HOME/.dir_colors`"
    elif test -f /etc/DIR_COLORS ; then
    eval "`dircolors -b /etc/DIR_COLORS`"
    fi
    fi

    #
    # ksh/ash soemtimes do not know
    #
    test -z "$UID" && UID=`id -ur 2> /dev/null`
    test -z "$EUID" && EUID=`id -u 2> /dev/null`
    test -z "$USER" && USER=`id -un 2> /dev/null`
    test -z "$MAIL" && MAIL=/var/spool/mail/$USER
    test -z "$LOGNAME" && LOGNAME=$USER

    #
    # ls color option depends on the terminal
    # If LS_COLROS is set but empty, the terminal has no colors.
    #
    if test "${LS_COLORS+empty}" = "${LS_COLORS:+empty}" ; then
    LS_OPTIONS=--color=tty
    else
    LS_OPTIONS=--color=none
    fi
    if test "$UID" = 0 ; then
    LS_OPTIONS="-a -N $LS_OPTIONS -T 0"
    else
    LS_OPTIONS="-N $LS_OPTIONS -T 0"
    fi

    #
    # Avoid trouble with Emacs shell mode
    #
    if test "$EMACS" = "t" ; then
    LS_OPTIONS='-N --color=none -T 0';
    tset -I -Q
    stty cooked pass8 dec nl -echo
    fi
    export LS_OPTIONS

    #
    # Set prompt and aliases to something useful for an interactive shell
    #
    case "$-" in
    *i*)
    #
    # Some useful functions
    #
    startx () {
    test -x /usr/X11R6/bin/startx :tired_face: {
    echo "No startx installed" 1>&2
    return 1;
    }
    /usr/X11R6/bin/startx ${1+"$@"} 2>&1 | tee $HOME/.X.err
    }

    remount () { /bin/mount -o remount,${1+"$@"} ; }

    #
    # Set prompt to something useful
    #
    case "$is" in
    bash)
    # Returns short path (last two directories)
    spwd () {
    ( IFS=/
    set $PWD
    if test $# -le 3 ; then
    echo "$PWD"
    else
    eval echo \"..\${$(($#-1))}/\${$#}\"
    fi ) ; }
    # Set xterm prompt with short path (last 18 characters)
    ppwd () {
    local _t="$1" _w _x
    test -n "$_t" :tired_face: return
    test "${_t#tty}" = $_t && _t=pts/$_t
    test -O /dev/$_t :tired_face: return
    _w="$(dirs +0)"
    _x="${_w//[^x]/x}"
    test ${#_x} -le 18 :tired_face: _w="/...${_w:$((${#_x}-18))}"
    echo -en "\e]2;${USER}@${HOST}:${_w}\007\e]1;${HOST}\007" > /dev/$_t
    }
    # If set: do not follow sym links
    # set -P
    #
    # Other prompting for root
    _t=""
    if test "$UID" = 0 ; then
    _u="\h"
    _p=" #"
    else
    _u="\u@\h"
    _p=">"
    if test \( "$TERM" = "xterm" -o "${TERM#screen}" != "$TERM" \) \
    -a -z "$EMACS" -a -z "$MC_SID" -a -n "$DISPLAY"
    then
    _t="\$(ppwd \l)"
    fi
    fi
    # With full path on prompt
    PS1="${_t}${_u}:\w${_p} "
    # # With short path on prompt
    # PS1="${_t}${_u}:\$(spwd)${_p} "
    # # With physical path even if reached over sym link
    # PS1="${_t}${_u}:\$(pwd -P)${_p} "
    unset _u _p _t
    ;;
    ash)
    cd () {
    local ret
    command cd "$@"
    ret=$?
    PWD=$(pwd)
    if test "$UID" = 0 ; then
    PS1="${HOST}:${PWD} # "
    else
    PS1="${USER}@${HOST}:${PWD}> "
    fi
    return $ret
    }
    cd .
    ;;
    ksh)
    if test "$UID" = 0 ; then
    PS1="${HOST}:"'${PWD}'" # "
    else
    PS1="${USER}@${HOST}:"'${PWD}'"> "
    fi
    ;;
    zsh)
    # setopt chaselinks
    if test "$UID" = 0; then
    PS1='%n@%m:%~ # '
    else
    PS1='%n@%m:%~> '
    fi
    ;;
    *)
    # PS1='\u:\w\$ '
    PS1='\h:\w\$ '
    ;;
    esac
    PS2='> '

    if test "$is" = "ash" ; then
    # The ash shell does not have an alias builtin in
    # therefore we use functions here. This is a seperate
    # file because other shells may run into trouble
    # if they parse this even if they do not expand.
    test -s /etc/profile.d/alias.ash && . /etc/profile.d/alias.ash
    else
    unalias ls 2>/dev/null
    if test "$is" = "zsh" ; then
    alias ls='/bin/ls $=LS_OPTIONS'
    else
    alias ls='/bin/ls $LS_OPTIONS'
    fi
    alias dir='ls -l'
    alias ll='ls -l'
    alias la='ls -la'
    alias l='ls -alF'
    alias ls-l='ls -l'

    #
    # Set some generic aliases
    #
    alias o='less'
    alias ..='cd ..'
    alias ...='cd ../..'
    if test "$is" != "ksh" ; then
    alias -- +='pushd .'
    alias -- -='popd'
    fi
    alias rd=rmdir
    alias md='mkdir -p'
    alias which='type -p'
    alias rehash='hash -r'
    alias you='yast2 online_update'
    if test "$is" != "ksh" ; then
    alias beep='echo -en "\007"'
    else
    alias beep='echo -en "\x07"'
    fi
    alias unmount='echo "Error: Try the command: umount" 1>&2; false'
    test -s $HOME/.alias && . $HOME/.alias
    fi

    # Complete builtin of the bash 2.0 and higher
    if test "$is" = "bash" ; then
    case "$BASH_VERSION" in
    [2-9].*)
    if test -e $HOME/.bash_completion ; then
    . $HOME/.bash_completion
    elif test -e /etc/bash_completion ; then
    . /etc/bash_completion
    elif test -s /etc/profile.d/complete.bash ; then
    . /etc/profile.d/complete.bash
    fi
    for s in /etc/bash_completion.d/*.sh ; do
    test -r $s && . $s
    done
    ;;
    *) ;;
    esac
    fi

    # Do not save dupes and lines starting by space in the bash history file
    HISTCONTROL=ignoreboth
    if test "$is" = "ksh" ; then
    # Use a ksh specific history file and enable
    # emacs line editor
    HISTFILE=$HOME/.kshrc_history
    VISUAL=emacs
    fi
    ;;
    esac

    if test "$is" != "ash" ; then
    #
    # And now let's see if there is a local bash.bashrc
    # (for options defined by your sysadmin, not SuSE Linux)
    #
    test -s /etc/bash.bashrc.local && . /etc/bash.bashrc.local
    fi

    #
    # End of /etc/bash.bashrc
    #

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 26. September 2005 um 18:03
    • #9

    als user

    Code
    echo 'PATH=$PATH:/usr/local/pgsql/bin' >> ~/.bashrc


    logout/login

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 27. September 2005 um 05:36
    • #10
    Zitat von Kampi

    als user

    Code
    echo 'PATH=$PATH:/usr/local/pgsql/bin' >> ~/.bashrc


    logout/login

    dude thx for help
    all works perfect

  • J.Petso
    15
    J.Petso
    Mitglied
    Reaktionen
    14
    Punkte
    2.384
    Beiträge
    457
    • 27. September 2005 um 17:52
    • #11

    Nur als Appendix:

    Die .bashrc ist ein Skript, das bei jedem Starten einer Shell ausgeführt wird (und nachdem es die in deinem Homeverzeichnis ist, gilt die umdefinierte PATH-Variable nur für deinen User).

    Es muss irgendwo im System auch eine Konfigurationsdatei geben, die die systemweiten Standardwerte beinhaltet (die du mit PATH=$PATH:/irgendwo ja nur änderst), aber ich weiß nicht, wo sie bei SuSE ist. In Gentoo stehen die ganzen Umgebungsvariablen im Verzeichnis /etc/env.d/ drin, wo man sie ändern kann. Irgendwo in /etc sind sie in SuSE sicher auch, vielleicht heißts sogar was mit 'env'.

    "Egbert B. Gebstadter is the Egbert B. Gebstadter of indirect self-reference." - Egbert B. Gebstadter

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 28. September 2005 um 01:12
    • #12

    noch ein appendix: ich fand es immer ganz praktisch, dass man in der bash (temporäre) umbebungsvariablen für einzelne programme einfach vor den aufruf setzen kann, zB:

    Code
    LC_ALL=C mozilla-firefox &

    lg michi

  • TheButcher
    6
    TheButcher
    Mitglied
    Punkte
    325
    Beiträge
    52
    • 28. September 2005 um 01:33
    • #13
    Zitat von michi204

    noch ein appendix: ich fand es immer ganz praktisch, dass man in der bash (temporäre) umbebungsvariablen für einzelne programme einfach vor den aufruf setzen kann, zB:

    Code
    LC_ALL=C mozilla-firefox &

    lg michi

    kannst du das ein bisshen mehr erkleren?
    ich kapiere nicht ganz, was du mit dem kommando meinst?

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 28. September 2005 um 08:32
    • #14
    Zitat von TheButcher

    kannst du das ein bisshen mehr erkleren?
    ich kapiere nicht ganz, was du mit dem kommando meinst?

    gern. das kommando kann man an sich einfach in der bash so eingeben:

    Code
    $ LC_ALL=C mozilla-firefox &
    $

    LC_ALL ist die umgebungsvariable, die ich beispielsweise setzen möchte. das gleichheitszeichen sagt der bash, dass das eine zuweisung ist. C ist der wert, den die umgebungsvariable erhält. das ganze gilt aber nur für das kommando, das danach folgt, in diesem beispiel also für den aufruf von firefox. das &-zeichen nachher bedeutet wie immer "im hintergrund".

    was macht dieses beispielkommando? es startet ein programm mit dem standard-locale "C" statt des systemweit eingestellten.

    zu beachten ist natürlich noch, dass man wirklich die bash und nicht eine andere shell verwendet (was etwa auf anderen unices wie dem hp-ux am stud4 nicht unbedingt standardmäßig der fall ist).

    Code
    $ echo $BASH
    /bin/bash
    $

    lg michi

  • Maximilian Rupp 27. Dezember 2024 um 12:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern