Nochmal zu dem leidigen Problem mit dem Pfad.
Ich hab bei mir mal folgende echo-Ausgaben eingebaut:
/etc/profile
Code:
#/etc/profile: system-wide .profile file for ash.
[B]echo "Executing /etc/profile ..."[/B]
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin"
umask 022
#This fixes the backspace when telnetting in.
#if [ "$TERM" != "linux" ]; then
# stty erase
#fi
PGDATA=/var/service/pgsql
export PATH PGDATA
HOME=/root
export HOME
TERM=${TERM:-cons25}
export TERM
PAGER=more
export PAGER
PS1="`hostname`> "
alias dir="ls -al"
alias ll="ls -la"
ulimit -c unlimited
#verdreht am 12.08.2009 gm um Plattenzugriffe zu minimieren
#PATH=/opt/bin:/opt/sbin:$PATH
PATH=$PATH:/opt/bin:/opt/sbin
#Mailstation (12.04.2010 gm)
PATH=$PATH:/usr/syno/mailstation/sbin:/usr/syno/mailstation/bin
/root/.profile
Code:
#/etc/profile: system-wide .profile file for ash.
[B]echo "Executing /root/.profile ..."[/B]
PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin"
umask 022
#This fixes the backspace when telnetting in.
#if [ "$TERM" != "linux" ]; then
# stty erase
#fi
export PATH
HOME=/root
export HOME
TERM=${TERM:-cons25}
export TERM
PAGER=more
export PAGER
PS1="`hostname`> "
alias dir="ls -al"
Beim Anmelden kommt nun
Code:
login as: root
root@DS209's password:
BusyBox v1.16.1 (2011-09-04 02:17:45 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
Executing /etc/profile ...
Executing /root/.profile ...
DS209>
Beide Dateien werden also durchlaufen. Alle Pfad-Änderungen addieren sich. Letztendlich sitzt PATH auf
Code:
DS209> echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/opt/sbin:/usr/syno/mailstation/sbin:/usr/syno/mailstation/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
Sicherlich nicht schön, da einiges unnötigerweise mehrfach enthalten ist, ist aber halt so default. Für funktionierendes "ipkg update" ist nur wichtig, dass der erste Treffer von wget im Pfad die Version von optware ist. Ob man dies dadurch erreicht, dass man /opt/bin/wget nach /usr/syno/bin kopiert oder /opt/bin in den Pfad vorne aufnimmt, ist zunächst mal egal. Wo die aufgerufene Version herkommt zeigt "which wget" (bei mir /usr/syno/bin/wget, welches aber bei eine Kopie von /opt/bin/wget ist und nicht mehr das Original).
Ich hoffe, es ist jetzt etwas klarer, wie der letztendlich gültige Pfad zustande kommt.
Edit:
Und noch ein Hinweis: Das ganze gilt nur für interaktive Logins. Shell-Scripts, die z.B. per cron laufen, müssen ihren Pfad selbst setzen oder eines oder beide profiles "sourcen" (z.B. ". /etc/profile"). Der Punkt+Leerzeichen am Zeilenanfang wirkt wie ein Include, also so, wie wenn der komplette Code aus /etc/profile an dieser Stelle stünde.
Gruß
Benares