ubuntuusers.de

standard shell ändern

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

schaeaef

Anmeldungsdatum:
2. April 2007

Beiträge: 9

hallo,

hab folgendes entdeckt:
Wer Probleme mit Ubuntu 6.10 oder neuer hat: Das liegt daran, dass die Standard-Shell nicht mehr die bash sondern dash ist. (Grund dafür ist ein "schnellerer" Bootvorgang). Wenn man das rückgängig macht (wobei ich nicht mehr genau weiß, ob das nur manuell über den Link /bin/sh oder über update-alternatives ging) laufen wieder alle Shell- und Build-Skripte vernünftig.

kann mir bitte einer helfen, das zu machen ...

das problem ist, ich hab probleme beim kompilieren eines images

mfg

Kopfgeldjaeger

Anmeldungsdatum:
24. Dezember 2006

Beiträge: 1168

Schonmal versucht im "configure"-Skript einfach sh (ganz oben) zu bash zu ändern? Oder einfach
sudo ln -s /bin/bash /bin/sh
ganz eventuell vorher noch /bin/sh löschen

schaeaef

(Themenstarter)

Anmeldungsdatum:
2. April 2007

Beiträge: 9

thx, für die antwort, werde es noch mal durchlaufen lassen und schauen, ob es jetzt geht ...

edit: naja geht leider immer noch nicht

hat wer nen tipp !

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

EDIT: Diese Lösung mit update-alternatives funktioniert für Standard-Shells nicht:
http://forum.ubuntuusers.de/viewtopic.php?p=668167#668167

sudo update-alternatives sh

gibt es nicht (weshalb eigentlich?):

~$ sudo update-alternatives --config sh
No alternatives for sh.
~$ sudo update-alternatives --config dash
No alternatives for dash.
~$ sudo update-alternatives --config bash
No alternatives for bash


Du mußt das anlegen

sudo update-alternatives --install sh sh /bin/dash 55
sudo update-alternatives --install sh sh /bin/bash 55
sudo update-alternatives --install sh sh /bin/sash 55


Dann kannst Du es konfigurieren:

~$ sudo update-alternatives --config sh
There are 3 alternatives which provide `sh'.

  Selection    Alternative
-----------------------------------------------
*+        1    /bin/dash
          2    /bin/bash
          3    /bin/sash

Press enter to keep the default[*], or type selection number:  2
Using `/bin/bash' to provide `sh'.
~$ sudo update-alternatives --display sh
sh - status is manual.
 link currently points to /bin/bash
/bin/dash - priority 55
/bin/bash - priority 55
/bin/sash - priority 55
Current `best' version is /bin/dash.
~$ sudo update-alternatives --config sh

There are 3 alternatives which provide `sh'.

  Selection    Alternative
-----------------------------------------------
 +        1    /bin/dash
*         2    /bin/bash
          3    /bin/sash

Press enter to keep the default[*], or type selection number: 1
Using `/bin/dash' to provide `sh'.

Damit das nun auch funktioniert, muß man den Link /bin/sh, der auf die dash verweist, löschen, und neu anlegen, dass er auf /etc/alternatives/sh verweist:

sudo rm /bin/sh
sudo ln -s  /etc/alternatives/sh /bin/sh
~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 20 Apr  3 23:57 /bin/sh -> /etc/alternatives/sh
~$ ls -l /var/lib/dpkg/alternatives/sh
-rw-r--r-- 1 root root 51 Apr  3 23:52 /var/lib/dpkg/alternatives/sh

Mit help|head -n1 kannst Du die Version der bash erfahren, nach dem logout und erneutem login.
Oder einfach mit

~$ sh
sh-3.1$

Bei der dash sieht das dann so aus:

~$ sh
$

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

So ganz klappt es hier nicht (system von dapper auf edgy upgegradet).
Es wird immer noch nach dem login und für Terminals die bash genommen, obwohl /bin/sh auf die dash verweist.
Woran liegt es?
sh startet auch wie erwartet die dash.

Hmm... ein grep bringt u.a. das hier:

~$ rgrep /bin/bash /etc/* 2>/dev/null|egrep "(gdm|cpu|gnome|login|adduser|passwd)"
/etc/adduser.conf:DSHELL=/bin/bash
/etc/alternatives/gnome-www-browser:#!/bin/bash
/etc/cpu/cpu.conf:DEFAULT_SHELL         = /bin/bash
/etc/gnome-system-tools/users/profiles.xml:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles.xml:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles.xml:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles.xml.dpkg-old:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles.xml.dpkg-old:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles.xml.dpkg-old:    <shell>/bin/bash</shell>
/etc/gnome-system-tools/users/profiles:shell=/bin/bash
/etc/gnome-system-tools/users/profiles:shell=/bin/bash
/etc/gnome-system-tools/users/profiles:shell=/bin/bash
/etc/gnome-vfs-mime-magic:0     string          #!/bin/bash                    text/x-sh
/etc/gnome-vfs-mime-magic:1:16  string          /bin/bash                      text/x-sh
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:abc:x:1000:1000:Herr abc,,,:/home/abc:/bin/bash
/etc/passwd:xyz:x:1001:1001:Herr xyz,,,:/home/xyz:/bin/bash
/etc/passwd:postgres:x:124:124:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
/etc/passwd:gast:x:1002:1003:gast,,,:/home/gast:/bin/bash
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
/etc/passwd-:abc:x:1000:1000:Herr abc,,,:/home/abc:/bin/bash
/etc/passwd-:xyz:x:1001:1001:Herr xyz,,,:/home/xyz:/bin/bash
/etc/passwd-:postgres:x:124:124:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
/etc/passwd-:gast:x:1002:1003:gast,,,:/home/gast:/bin/bash
/etc/xdg/xfce4/desktop/menudefs.hook:         <app name="Bash" cmd="/bin/bash --login" term="yes" icon="" />

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Du musst doch nur in /etc/passwd die Zeile mit deinem Benutzernamen raussuchen und das letzte Feld von /bin/sh auf /bin/dash ändern (oder welche shell auch immer Du nutzen willst).

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Heißt das, wenn ich das in /etc/passwd so mit /bin/sh an Stelle von /bin/bas oder /bin/dash mache, kann ich das später über update-alternatives ändern?

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

floogy hat geschrieben:

Heißt das, wenn ich das in /etc/passwd so mit /bin/sh an Stelle von /bin/bas oder /bin/dash mache, kann ich das später über update-alternatives ändern?

Das funktioniert nicht.

Gruß

Dirk

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Könntest Du das mal etwas näher erläutern? Mir fehlen da nämlich die nötigen Einblicke...
Sorry, wenn der thread nun ein bisschen Zweckentfremdet wird, aber wie kann es sein, dass bei mir überall die bash läuft, nach einem dist-upgrade auf edgy? Geht da denn was mit /etc/defaults, oder dpkg-reconfigure?

EDIT: Ok, ich wollte mal faul sein, aber da es so einfach war, das hier mit dem Wiki Shell zu lösen, hier noch mal die Lösung:

Um eine Shell als Standard zu setzen, muss man diesen Befehl ausführen:

chsh -s $path

wobei $path durch den Pfad der Shell ersetzt werden muss.

o Bash /bin/bash
o Dash /bin/dash
o Fish /usr/bin/fish
o Zsh /usr/bin/zsh

Nachdem eine Shell gesetzt worden ist muss man sich Ab- und Anmelden damit dieser Wechsel wirksam wird.

chsh muss demnach wohl sowas wie change shell sein, und demnach ist auch die Frage beantwortet, weshalb das nicht mit update alternatives geschieht. Das wird daran liegen, dass die shell an so vielen Stellen in den Konfigurationsdateien unter /etc vorkommt, und (wie ich ja auch feststellte musste) damit die Methode update-alternatives nicht funktioniert.

Wieder mal was gelernt.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

floogy hat geschrieben:

Heißt das, wenn ich das in /etc/passwd so mit /bin/sh an Stelle von /bin/bas oder /bin/dash mache, kann ich das später über update-alternatives ändern?

Nein, damit änderst Du nur deine login-shell. Aber wie man das Alternativen-System bedient, wurde in diesem Thread auch schon idiotensicher erklärt.

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Wie Du schon sagtest, ändert das nur die login-shell. Mir ging es aber eher um eine globale Umstellung der Standard-Shell. Vielleicht war das unglücklich formuliert.
In meinem letzten Post verwies ich darauf, dass das alternativen-System bei der Shell nicht umfassend genug greift, und zum Wechsel der Standardshell chsh verwendet werden sollte.
Es ging mir nicht darum, wie das Alternativen-System funktioniert, das habe ich ja wohl schon an anderer Stelle klar gemacht.

Aber das Problem besteht ja wohl weiterhin:
schaeaef hat geschrieben:

naja geht leider immer noch nicht
hat wer nen tipp !

schaeaef

(Themenstarter)

Anmeldungsdatum:
2. April 2007

Beiträge: 9

floogy hat geschrieben:

Könntest Du das mal etwas näher erläutern? Mir fehlen da nämlich die nötigen Einblicke...
Sorry, wenn der thread nun ein bisschen Zweckentfremdet wird, aber wie kann es sein, dass bei mir überall die bash läuft, nach einem dist-upgrade auf edgy? Geht da denn was mit /etc/defaults, oder dpkg-reconfigure?

EDIT: Ok, ich wollte mal faul sein, aber da es so einfach war, das hier mit dem Wiki Shell zu lösen, hier noch mal die Lösung:

Um eine Shell als Standard zu setzen, muss man diesen Befehl ausführen:

chsh -s $path

wobei $path durch den Pfad der Shell ersetzt werden muss.

o Bash /bin/bash
o Dash /bin/dash
o Fish /usr/bin/fish
o Zsh /usr/bin/zsh

Nachdem eine Shell gesetzt worden ist muss man sich Ab- und Anmelden damit dieser Wechsel wirksam wird.

chsh muss demnach wohl sowas wie change shell sein, und demnach ist auch die Frage beantwortet, weshalb das nicht mit update alternatives geschieht. Das wird daran liegen, dass die shell an so vielen Stellen in den Konfigurationsdateien unter /etc vorkommt, und (wie ich ja auch feststellte musste) damit die Methode update-alternatives nicht funktioniert.

Wieder mal was gelernt.

thx, bin gerade am testen, ich hoffe es funktioniert diesmal ...
noch eine frage, wie ist denn das root kennwort !?! ... wenn ich su in das terminal eingebe, verlang er nach einem kennwort. ich hab nie eins angegeben. wenn ich das kennwort leer lasse kommt nur:

su: Authentication failure
Entschuldigung

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Die Standardmethode etwas mit Rootrechten auszuführen ist unter Ubuntu sudo. Das nötige Passwort ist Dein Userpasswort.

schaeaef

(Themenstarter)

Anmeldungsdatum:
2. April 2007

Beiträge: 9

leider funktioniert das kompilieren immer noch nicht ....

ich habe einen lösungsweg entdeckt, nur leider werde ich daraus nicht schlau ☹
http://www.dream-multimedia-tv.de/board/thread.php?threadid=2774

könnt ihr euch das bitte mal ansehen

floogy

Anmeldungsdatum:
21. Juli 2006

Beiträge: 3297

Wohnort: Koblenz

Was hast Du denn nun gändert? hast Du Dich auch aus- und wieder eingeloggt?

ls -l `which sh`
ls -l `which bash`
ls -l `which dash`
sudo update alternatives --display sh
ls -l /etc/alternatives/sh
help|head -n1

Mehr bringt wohl mal die Ausgabe von ./configure im No Paste Service per Copy and Paste.
Außerdem

head -n1 ./configure

.

Antworten |