PATH setzen und löschen??

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

PATH setzen und löschen??

Beitrag von latenite » 18.07.2007 17:02:48

hi Leute

sagt mal ich habe ausversehen mit

export PATH=$PATH:/das/ist/das/fluxbox/verzeichnis

jetzt steht das da drin..ich wills aber gelöscht haben? wo ist die Datei die ich editieren muss?


:roll:

kann man für jeden benutzer keinen anderen path definieren? so das benutzerspeziefisch programme ausführbar sind und nicht? wen ja wo und wie? :roll:

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 18.07.2007 19:24:59

hi,

also eigentlich gehören selbstgeschriebene Sachen nach /usr/local/,
speziell Scripte nach /usr/local/bin. Das ist normalerweise sowieso
in $PATH drin, da braucht man sich um nichts zu kümmern.
Beware of programmers who carry screwdrivers.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 21.07.2007 17:51:07

ja aber auch wenn ich mal nen ordner unter /usr/local/bin/my_scrips/test anlege und test löschen will...wie mache ich das???

dolphin
Beiträge: 362
Registriert: 01.05.2006 11:48:24

Beitrag von dolphin » 21.07.2007 18:15:05

latenite hat geschrieben:ja aber auch wenn ich mal nen ordner unter /usr/local/bin/my_scrips/test anlege und test löschen will...wie mache ich das???
Spontan faellt mir dazu ein:

Code: Alles auswählen

export PATH_BACKUP=$PATH
export PATH=$PATH:/das/ist/das/fluxbox/verzeichnis
# mach irgendwas
export PATH=$PATH_BACKUP
Loest das dein Problem?



Desweiteren hatte ich mal das Problem, dass ich $HOME/bin in den Pfad aufgenommen haben
wollte. Dabei hatte ich mir wie folgt geholfen:

Datei ~/.bashrc editieren. Am Ende der Datei folgenden Aufruf einfügen:

Code: Alles auswählen

if [ "${UNIQUE_CALL}" != "already called" ]
then
  export UNIQUE_CALL="already called"
  export PATH=$PATH:$HOME/bin
fi
Erklärung: Mit jedem Aufruf von BASH wird die ".bashrc" ausgeführt. Um zu vermeiden, dass das
"bin"-Verzeichnis mit jedem BASH-Aufruf erneut an den PATH angehängt wird, wird mit der Umgebungsvariable
${UNIQUE_CALL} getestet, ob das "bin"-Verzeichnis bereits vorher einmal angehängt wurde.

dolphin
Beiträge: 362
Registriert: 01.05.2006 11:48:24

Re: PATH setzen und löschen??

Beitrag von dolphin » 21.07.2007 18:25:30

latenite hat geschrieben:hi Leute

sagt mal ich habe ausversehen mit

export PATH=$PATH:/das/ist/das/fluxbox/verzeichnis

jetzt steht das da drin..ich wills aber gelöscht haben? wo ist die Datei die ich editieren muss?
Noch eine Bemerkung: Zumindest ich kenne es so, dass Befehle wie

Code: Alles auswählen

export PATH=$PATH:/das/ist/das/fluxbox/verzeichnis
immer nur so lange gelten, wie die Bash aktiv ist. Wenn du die Bash beendest und sie
neu aufmachst, sollte das System deine Eingabe bereits vergessen haben. Sie gilt nur
innerhalb der Shell, in der du sie gemacht hast (und in den von der Bash erzeugten Soehnen,
also wenn du von der Bash eine Bash aufrufst).

dolphin

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 21.07.2007 20:27:40

und wie kann ich nun diesen pfad sauerhaft aufnehmen?...welche datei muss ich edtieren??

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 21.07.2007 21:04:44

latenite hat geschrieben:und wie kann ich nun diesen pfad sauerhaft aufnehmen?...welche datei muss ich edtieren??
Der PATH wird in /etc/profile und ~/.bash_profile gesetzt.

Cologne4711
Beiträge: 260
Registriert: 04.12.2006 11:37:59

Beitrag von Cologne4711 » 21.07.2007 22:34:24

Wenn Du Dich mit einem Display Manager (GDM, KDM, etc.) anmeldest, wird die /etc/profile nicht genommen.

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 22.07.2007 04:12:59

meine /root/.bash_profile sieht so aus...

Code: Alles auswählen

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/bin/my_scripts:/scripts:

export PATH
unset USERNAME
und meine /etc/profile so...

Code: Alles auswählen

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin/my_scripts"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export PATH

JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun-1.5.0.11/"
export JAVA_HOME

umask 022

trotzdem findet die bash keins der scripte diei unter /bin/my_scripts/ liegen?

warum nur?? :roll:

dolphin
Beiträge: 362
Registriert: 01.05.2006 11:48:24

Beitrag von dolphin » 22.07.2007 06:34:12

markus_b hat geschrieben:
latenite hat geschrieben:und wie kann ich nun diesen pfad sauerhaft aufnehmen?...welche datei muss ich edtieren??
Der PATH wird in /etc/profile und ~/.bash_profile gesetzt.
Das ist schon komisch. Auf meinen Etch-Systemen hat der "root" kein ~/.bash_profile, nur
die User haben eins. So richtig intuitiv fand ich diese Profile-Geschichten in der UNIX-Welt daher noch nie, sondern
eher widersprüchlich. In der DOS-Welt war es einfach: Da gab es die config.sys und die autoexec.bat und
alles das, was da drin stand, war logisch (und nachvollziehbar).

dolphin
Beiträge: 362
Registriert: 01.05.2006 11:48:24

Beitrag von dolphin » 22.07.2007 06:45:04

latenite hat geschrieben:trotzdem findet die bash keins der scripte diei unter /bin/my_scripts/ liegen?

warum nur?? :roll:
Also: Wie bereits oben angemerkt: Ich bin vor einiger Zeit zu dem Schluss gekommen, dass das
System Pfad-Angaben dauerhaft speichert, wenn du sie in die ~/.bashrc schreibst, so wie oben
im Beitrag vom 21.07.2007 um 18:15:05 Uhr von mir gezeigt. Die Tilde ist dabei das Home-Verzeichnis
des aktuellen Users, du musst das also fuer jeden User machen.

Wenn du es systemweit speichern willst, dann probier mal aus, was markus_b angemerkt hat
(wobei ich das allerdings nicht getestet habe und daher nicht weiss, ob das tatsaechlich klappt).

Auch wichtig:
Deine Skripte unter /bin/my_scripts muessen ausführbar sein. Du solltest wissen,
was der Befehl

Code: Alles auswählen

chmod 755 datei
bedeutet oder aber wissen, wie man mit Datei-Browsern (oder Midnight-Commander)
die Permissions von Dateien setzt.

dolphin

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Beitrag von latenite » 22.07.2007 12:14:19

meine /root/.bashrc sieht so aus...

Code: Alles auswählen

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/bin/my_scripts:/scripts:

export PATH
unset USERNAME
und ja chmod hab ic auf die schripte alle angewand..hab sie ja auch ausprobiert

kann es sein das es was damit zu tun hat das ich root bin?? :roll:

oder habe ich in einem der 3 einen tippfehler? kommen das noch "" hin??

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

uuups verdreht

Beitrag von latenite » 22.07.2007 12:25:25

sorry das vermeindlich als .bashrc gepostetet war meine .bash_profile

hier die .bashrc in der tatsächlich noch kein PATH drin steht

Code: Alles auswählen

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

export PS1='\h:\w\$ '
umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

in welcher systax füge ich hier die pfade ein?? :roll:

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

jippi es funktioniert

Beitrag von latenite » 22.07.2007 16:40:26

also ich habs danke eurer hilfe doch hinbekommen...

so sieht die .bashrc jetzt aus

Code: Alles auswählen

# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white# ~/.bashrc: executed by bash(1) for non-login shells.


#\a Das Bell-Zeichen, wie es durch die Tastenkombination [Ctrl][g] erzeugt wird

Code: Alles auswählen

#\d 	das aktuelle Datum im Format Thu Jan 18
#\e 	das Escape-Zeichen
#\H 	der gesamte (Host) -Name
#\h 	der Rechner (Host) -Name bis zum ersten Punkt
#\n 	ein Newline (LineFeed) -Zeichen
#\r 	ein Return (Carriage Return) -Zeichen
#\s 	der Programmname der Bash, also bash
#\t 	die aktuelle Systemzeit im 24-Stundenformat HH:MM:SS
#\T 	die aktuelle Systemzeit im 12-Stundenformat HH:MM:SS
#\@ 	die aktuelle Systemzeit im 12-Stundenformat mit am/pm (01:39am)
#\u 	der Username
#\v 	die Version der ausgeführten Bash (2.03)
#\V 	Das Release der Bash, bestehend aus der Versionsnummer und dem Patchlevel (2.03.1)
#\w 	das aktuelle Arbeitsverzeichnis in ausführlicher Darstellung, beispielsweise ~/LinuxMagazin/bash/teil6
#\W 	der letzte Teil des aktuellen Verzeichnisses, etwa teil6
#\! 	die (History-) Nummer der aktuellen Befehlszeile
#\# 	die Nummer der Befehlszeile in der aktuellen Bash-Sitzung
#\$ 	mit diesem Schlüssen wird der Rootaccount gekennzeichnet. Wenn die effektive UID gleich #Null ist, stellt die Bash das Hashmark dar, sonst ein Dollar-Zeichen
#\NNN 	Jedes beliebige ASCII-Zeichen kann durch Eingabe des oktalen Codes nach einem Backslash #erzeugt werden
#\\ 	der Backslash selbst wird durch zwei Backslash-Zeichen erzeugt
#\[ 	eine Folge von Steuerzeichen wird so eingeleitet
#\] 	die Folge von Steuerzeichen wird so beendet

Code: Alles auswählen

######################################################################################
export PS1='\[\033[01;37m\]\@\[\033[01;32m\]\u\[\033[01;34m\]@\[\033[01;32m\]\h\[\033[00;37m\] \w\[\033[01;33m\] ->\[\033[01;31m\] '

#export PROMPT_COMMAND='date +%H:%M:%S'
# export PS1='\h:\w\$ '
umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
eval `dircolors /root/dircolors`
# eval $(dircolors -b /root/Desktop/dircolors)
alias ls='ls --color=auto'
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

PATH=$PATH:/bin/my_scripts/
export PATH

JAVA_HOME=/
export JAVA_HOME

CLASSPATH=/usr/lib/:/java/
export CLASSPATH



############################################################################################
aber jetzt will ich noch das ich meine java.class datein von überall aus ausführen kann.
ablauf ist so...

ich erstelle mit vim "irgendwo" eine .java datei. dann führe ich javac /der/pfad/zur/datei aus.
soweit so gut..geht ja auch alles.

jetzt das problem:

da /der/pfad/zur/datei bei mir immer mal anders ist....weil ich z.B. noch einen unterordner auf mache nützt mir mein eintag in der ..bashrc

Code: Alles auswählen

PATH=$PATH:/bin/my_scripts/
export PATH

JAVA_HOME=/
export JAVA_HOME

CLASSPATH=/usr/lib/:/java/
export CLASSPATH
leider gar nichts wenn das .class file nicht genau da drin liegt.

also bekomme ich wenn ich java /pfad/zur/datei/derenunterordener/*.class eingebe wieder diesen fehler.

Code: Alles auswählen

06:27 root@t23 ~ -> java /root/Desktop/java_toc/uebungen/Hello
Exception in thread "main" java.lang.NoClassDefFoundError: /root/Desktop/java_toc/uebungen/Hello
06:34 root@t23 ~ ->
was ich will ist: das ich mit java /pfadangabe/*.class aus Jedem beliebigem Verzeichniss die Bytecodes ausführen kann.

das muss doch möglich sein?? oder ?? :roll:

Edit KBDCALLS : CodeTags eingefügt, um die Leserlichkeit zu erhöhen. http://www.debianforum.de/forum/faq.php?mode=bbcode

dolphin
Beiträge: 362
Registriert: 01.05.2006 11:48:24

Re: jippi es funktioniert

Beitrag von dolphin » 23.07.2007 05:00:15

Ich hab nicht viel Zeit jetzt.
Nur kurz: In deinem Pfad muss ein . auftreten, wenn du das willst, was du oben beschrieben hast.

Code: Alles auswählen

PATH=$PATH:/bin/my_scripts/:.
export PATH
Besser ist aber, du laesst den Punkt weg und startest jede ausfuerhbare Datei so:

Code: Alles auswählen

./ausfuerhbare Datei

Antworten