Config ASH Prompt (user@host:path)

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

wrybit

Benutzer
Registriert
21. Jan. 2008
Beiträge
8
Reaktionspunkte
0
Punkte
0
Hy,

ich habe leider wenig Erfahrung mit der Almquist-Shell (ash),
daher finde ich auch nicht raus wie ich den Prompt der Console
verändern kann.

Im Ordner /root habe ich die ".profile" folgender massen angepasst:

DEFAULT:
PS1="`hostname`> "

Mein Wunsch:
root@cubestation:volume> cd ..

Was geht:
PS1="`whoami`@`hostname`> "

Mein Versuch:
PS1="`whoami`@`hostname`:`pwd`> "

Leider erstellt letzteres einen statischen Zustand der nur beim Login einmal
erstellt wird und danach nicht mehr geupdatet. :(

Daher meine Frage: Hat einer von Euch dafür schon einen Lösungsansatz?
Oder: Wie kann ich eine andere Console (Bash) einsetzen?

Ich arbeite auf einer CS-407 (BusyBox 1.1.0 // Linux CubeStation 2.6.15 #518)

Vielen Dank schon mal im Vorraus.
 
Hi!

ich habe genau das gleiche Problem!

der Prompt ist immer statisch, selbt wenn man im .profile File PS1="`pwd`> " eingibt, funnktioniert es nicht, dass der aktuelle Pfad als Prompt angezeigt wird...

wirklich keiner ne Idee?

MfG
 
Mögliche Lösung per Skript in ~/.profile

Ich habe folgendes in meine ~/.profile geschrieben:

Rich (BBCode):
# Update der PS1-Umgebungsvariable bezgl. aktuellem Verzeichnis
update_ps1() {
        cur_user=$(whoami)
        cur_pwd=$(pwd)
        ech="\$"
        if [ $cur_user = "root" ]; then
                ech="#"
        fi
        if [ $cur_pwd = $HOME ]; then
                cur_pwd="~"
        fi
        PS1="$cur_user@`hostname`:$cur_pwd$ech "
}

# Initialisierung PS1
update_ps1

# Autom. PS1 updaten bei Verzeichnis-Wechsel mit cd
alias cd=my_cd
my_cd() {
        chdir $@
        update_ps1
}

Das Resultat funktioniert soweit ganz gut:

Rich (BBCode):
BusyBox v1.1.0 (2010.04.19-13:35+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

root@DiskStation:~# cd /volume1/homes/admin
root@DiskStation:/volume1/homes/admin# cd /root
root@DiskStation:~#

cd wird jetzt durch chdir implementiert, denn ash scheint builtin cd nicht zu verstehen; Keine Ahnung, ob das Unterschiede machen kann...

Ach ja, mein erster Post ... hallo, Welt! ;)
 
Willkommen im Forum und herzlichen Dank für den ersten, sehr interessanten Beitrag. Werde ich gelegentlich testen.

@Moderation: Bitte Threadtitel ändern (Prompt) damit er auch gefunden werden kann.
 
@moebi: Ich habe dein Script gerade an /root/.profile angehängt. Hat sofort bei der nächsten putty-Verbindung funktioniert.

Dankeschön.
 
Pfade mit Leerzeichen Problem

Das Script funzt so nicht wenn man in Pfade mit einem oder mehreren Leerzeichen wechseln möchte. Hier eine korrigierte Version:

Rich (BBCode):
update_ps1() {
  cur_user="`whoami`"
  cur_pwd="`pwd`"
  ech="\$"
  if [ "$cur_pwd" = "root" ]; then
    ech="#"
  fi
  if [ "$cur_pwd" = "$HOME" ]; then
    cur_pwd="~"
  fi
  PS1="$cur_user@`hostname`:$cur_pwd$ech "
}
# Initialisierung PS1
update_ps1
alias cd=my_cd
my_cd() {
  chdir "$@"
  update_ps1
}

Ansonsten ist die Idee mit dem Script sehr gut, wenn man keien bash über ipkg installieren kann.
Hoffe damit weitergeholfen zu haben.
 
und wies nicht einfach
Code:
PS1="\u@\h:\w"
\u ist der User \h der Servername und \w das aktuelle Verzeichnis mit home als ~
 
weil die PS1 Variable unter /bin/ssh (Standard Synology Shell) nur einmal ausgewertet wird, nicht beim Verzeichniswechsel.
Wenn man eine Bash hat, dann geht auch PS1 setzen.

Siehe /etc/passwd für die Login-Shell.
 
Hallo,
mit der aktuellen Firmware wird PS1 auch bei jedem Verzeichniswechsel aktualisiert. Funktioniert mit /bin/ash und /bin/sh. Ab welcher Firmware das geändert wurde weiß ich allerdings nicht.

Gruß Götz
 
Zuletzt bearbeitet:
Könnte es jetzt auch nicht genau sagen, aber sich seit DSM3 habe ich das bei mir so am laufen und die Verzeichnisse aktualisieren sich
shell.jpg
 
Das mit der roten Schrift kann man kaum lesen ... ich würde dir da etwas Kontrastreicheres empfehlen :)
 
seit DSM-3.1-1742 auf einer DS211J läuft auch die PS1-Variante (PS1 im ~/.profile bzw /root/.profile setzen).
Also können wohl alle User mit einer aktuellen Firmware tatsächlich auf die Aktion mit dem Script verzichten.
 
seit DSM-3.1-1742 auf einer DS211J läuft auch die PS1-Variante (PS1 im ~/.profile bzw /root/.profile setzen).
Also können wohl alle User mit einer aktuellen Firmware tatsächlich auf die Aktion mit dem Script verzichten.

ich denke, dass man es auch mit früheren Versionen probieren sollte, denn ich habe definitiv die 1618, mit der das auch geht ...

Itari
 
Wie gesagt seit DSM 3.0 geht es sicher. Ich meine auch es habe vorher schon irgendwann geklappt.
@itari
Die rote Schrift heisst nur: "Hei User pass auf du bist als root unterwegs. Denke zweimal bevor du enter drückst." ;-)
 
Hat das jemand schon mit der DSM 4 beta getestet?
Scheint als wäre es wieder broken?
Hier aktualisiert sich leider nichts.

bei mir auf der DS2411+ geht es:

Rich (BBCode):
BusyBox v1.16.1 (2012-01-13 21:19:34 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ds2411> PS1="\u@\h:\w "
root@ds2411:~ cd /
root@ds2411:/ cd /var
root@ds2411:/var uname -a
Linux ds2411 2.6.32.12 #2166 SMP Fri Jan 13 21:14:41 CST 2012 x86_64 GNU/Linux synology_x86_2411+

Hervorhebung ist von mir, damit man die Firmware-Version auch sieht

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat