Orangepi - Debian - foute command prompt / fout profile

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Maarten60
  • Registratie: Oktober 2009
  • Nu online
Mijn vraag
Ik heb Debian op een Orangepi geinstalleerd en kan inloggen via root user en alles ziet er normaal uit. Ik heb een nieuwe user aangemaakt met commando
> sudo useradd -m pi
> sudo passwd pi
> usermod -aG sudo pi
en pi toegevoegd aan sudoers.d om te voorkomen dat ik iedere keer password in moet voeren
Echter,
- de prompt is gewoon een $, tewijl ik pi@orangepi5:<dir> $ had verwacht. Dit werkt wel voor root
- verder is de instelling van het keyboard niet correct. Pijltjes werken niet. Wel bij root user.

Het lijkt erop dat de profile settings niet correct zijn

Relevante software en hardware die ik gebruik
Orangepi 5, met Debian software, versie bootworm


Wat ik al gevonden of geprobeerd heb
Ik ben gaan zoeken naar de instelling van de bash prompt op basis van https://www.cyberciti.biz...h-shell-setup-prompt.html
de file .bashrc bestaat

> grep PS1 ~/.bashrc geeft
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

> echo "$PS1" geeft lege response
> PS1="test -" veranderd de prompt naar test -
Dus mijn conclusie is dat PS1 niet goed wordt geinitialiseerd.

pijltje omhoog geeft: ^[[A (pijltjes werken wel binnen de nano editor)

Heb ik de user verkeerd aangemaakt?

edit - verder gezocht
Aan de file ~/.bashrc de regel
PS1="Mytest> "
toegevoegd
Als ik die wil activeren
$ source ~/.bashrc
krijg ik melding
-sh: 9: source: not found

ook command
$ cat ~/.bashrc -- gaat fout
-sh: 13: -sh:: not found

terwijl
$ cat .bashrc -- wel werkt

[ Voor 10% gewijzigd door Maarten60 op 11-09-2023 14:37 ]

Beste antwoord (via Maarten60 op 11-09-2023 19:56)


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

NEEEEEE!!! Ga geen symlinks voor deze zaken aanpassen!! AB-SO-LUUT NIET!

Wat je moet doen is je gebruiker de juiste shell geven. Dat had je bij het aanmaken van de gebruiker moeten doen, maar kan naderhand ook nog gewoon via het usermod commando:
usermod -s /bin/bash pi


Uit de useradd manpage:
code:
1
2
3
4
5
       -s, --shell SHELL
           sets the path to the user's login shell. Without this option, the
           system will use the SHELL variable specified in
           /etc/default/useradd, or, if that is as well not set, the field for
           the login shell in /etc/passwd remains empty.

Commandline FTW | Tweakt met mate

Alle reacties


Acties:
  • 0 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

Beetje te weinig info nog om een diagnose te stellen.
Het volgende zou wat meer duidelijkheid moeten geven:

~ verwijst naar je homedir, zou /home/pi moeten zijn, bestaat deze dir?
heeft deze dir de juiste rechten?
welke waarde heeft environmentvariabele $HOME?

wat is de uitvoer van:
code:
1
pwd

wat is de uitvoer van:
code:
1
ls -l /bin/sh

wat is de uitvoer van:
code:
1
grep ^pi /etc/passwd


(zomaar wat vraagjes)

/edit:
O ja, ik heb het idee dat /bin/sh naar /bin/dash verwijst, kun je beter (als root) /bin/bash van maken, dus:
code:
1
ln -sf bash /bin/sh

Wellicht is het dan al opgelost.

En/of je zet de verwijzing naar bash ook in /etc/passwd, dus zoiets:
code:
1
pi:x:1000:1000:,,,:/home/pi:/bin/bash

[ Voor 25% gewijzigd door MartinMeijerink op 11-09-2023 17:30 . Reden: nog een ideetje ]

An unbreakable toy is useful to break other toys


Acties:
  • 0 Henk 'm!

  • hcQd
  • Registratie: September 2009
  • Laatst online: 22:14
.bashrc wordt niet gebruikt bij een login-shell, daarvoor wordt bijvoorbeeld .bash_profile of .profile gebruikt, de handleiding heeft de details.

Acties:
  • 0 Henk 'm!

  • Maarten60
  • Registratie: Oktober 2009
  • Nu online
@MartinMeijerink je hebt gelijk, /bin/sh verwijst naar /bin/dash. Zie
code:
1
2
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan  5  2023 /bin/sh -> dash

Je suggestie
code:
1
ln -sf bash /bin/sh

Is de juiste en alles werkt nu zoals ik verwacht.
Blijft de vraag waarom die verwijzing niet goed is?

@hcQd Als ik het goed zie roept .profile weer bashrc aan.
Dank voor jullie tips.

Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

NEEEEEE!!! Ga geen symlinks voor deze zaken aanpassen!! AB-SO-LUUT NIET!

Wat je moet doen is je gebruiker de juiste shell geven. Dat had je bij het aanmaken van de gebruiker moeten doen, maar kan naderhand ook nog gewoon via het usermod commando:
usermod -s /bin/bash pi


Uit de useradd manpage:
code:
1
2
3
4
5
       -s, --shell SHELL
           sets the path to the user's login shell. Without this option, the
           system will use the SHELL variable specified in
           /etc/default/useradd, or, if that is as well not set, the field for
           the login shell in /etc/passwd remains empty.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Maarten60
  • Registratie: Oktober 2009
  • Nu online
ok, heb de eerste wijziging weer teruggedraaid en usermod commando gebruikt. Werkt!
Dat is misschien een meer logische weg omdat ik dan bij het aanmaken van een user meteen de juiste shell selecteer.

Acties:
  • +4 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

Er zijn processen en services die een bepaalde shell verwachten. Als dat opeens anders is, gaat het stuk. Dat is waarom je nooit zomaar de symlink naar een shell moet gaan wijzigen. Zeker die voor de default shell.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

Hero of Time schreef op maandag 11 september 2023 @ 19:36:
NEEEEEE!!! Ga geen symlinks voor deze zaken aanpassen!! AB-SO-LUUT NIET!
Dit klinkt wel heel dramatisch, ik beheer verschillende serverparken van 40 tot 50 linux-servers, van SUSE tot Debian en Ubuntu, zowel in Azure, Amazon EC2, als in onze eigen datacenters, en het aanpassen van de symlink /bin/sh is één van de eerste dingen die ik doe bij een nieuwe installatie!
Ik weet wel dat bash wat meer resources gebruikt dan dash, maar dit werkt nog het beste,
en als een script een bepaalde shell verwacht, kan men dat ook in de shebang van dat script zetten natuurlijk.
Er gaat ook echt nooit iets stuk, dus dat is wel een beetje overdreven.

Op zich heb je wel een punt natuurlijk, als ik voor elke gebruiker (die dat nodig heeft) in /etc/passwd gewoon bash als login-shell zet, en ik in al mijn eigen scripts ook overal bash in mijjn shebang zet gaat het ook wel goed. Maar deze manier van werken bij mij komt ook omdat ik al meer dan 20 jaar met linux werk, en in mijn begintijd was bash altijd al de default-shell, pas later kwam dash een keer, en deze shell heeft zo zijn beperkingen, dat ik liever voor bash kies.

An unbreakable toy is useful to break other toys


Acties:
  • +3 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

@MartinMeijerink, als jij de link naar de shell gaat aanpassen, heeft het natuurlijk geen enkel nut meer om het in de shebang te zetten. Doe ik #!/bin/sh en schrijf specifiek voor sh, effectief dus Dash, en krijg spontaan Bash voor m'n kiezen, dan gaat er echt wel wat stuk. Want Bash reageert anders op zaken.

Als ik jouw collega was, had ik je direct alle toegang tot de Linux servers ontzegd en zou je ze nooit meer aanraken.

Wil je dat gebruikers een bepaalde shell als standaard krijgen, dan stel je dat in bij de defaults voor useradd, zoals dat in de manpage beschreven staat.

Je wist zeker ook niet dat het command adduser bestaat die wél bash als standaard shell gebruikt. Het maakt zelfs standaard de home map aan en kopieert wat in /etc/skel staat. Daarentegen is het voornamelijk een Debian ding, dus wellicht is het niet op SuSE aanwezig. Maar daar is Yast aanwezig en kan je daar heel veel mee doen.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

Hero of Time schreef op maandag 11 september 2023 @ 22:16:
@MartinMeijerink, als jij de link naar de shell gaat aanpassen, heeft het natuurlijk geen enkel nut meer om het in de shebang te zetten.
Dat is helemaal correct, het eerste deel van mijn tweede alinea kan op meerdere manieren geïnterpreteerd worden, dus ik zal de volgende keer proberen wat duidelijker te zijn.
Doe ik #!/bin/sh en schrijf specifiek voor sh, effectief dus Dash, en krijg spontaan Bash voor m'n kiezen, dan gaat er echt wel wat stuk. Want Bash reageert anders op zaken.
Hier draai je de zaken om, /bin/sh was altijd bedoeld voor bash, en rond 2009 ofzo (of in ieder geval voor jouw tijd denk ik, want daarom denk je wellicht dat dash altijd de standaard was) hebben ze bij Ubuntu (en kort daarna ook bij Debian) bedacht om dash de facto als default shell in te stellen. Alle bestaande scripts met /bin/sh verwachtten dus bash, en kregen dash, die ook nog eens beperkter was in de mogelijkheden (juist toen was er een grotere kans dat er dingen stuk gingen). Al sinds dash de standaard werd, heb ik meteen bash weer als standaard ingesteld tot op de dag van vandaag, en er gaat gewoon nooit iets stuk. En oudere scripts (met #!/bin/sh erin) blijven dan ook gewoon goed werken. Ik kan je het allemaal tot in detail gaan uitleggen, maar het internet staat er vol mee, dus lees je eens in in deze materie.
Als ik jouw collega was, had ik je direct alle toegang tot de Linux servers ontzegd en zou je ze nooit meer aanraken.
Omdat jij de geschiedenis van bash en dash niet kent? Als je mijn collega was, had ik je eerst naar een beginnerscursus Linux gedaan. En een gratis les communicatieve vaardigheden erbij. ;)
Je wist zeker ook niet dat het command adduser bestaat die wél bash als standaard shell gebruikt.
Het maakt zelfs standaard de home map aan en kopieert wat in /etc/skel staat. Daarentegen is het voornamelijk een Debian ding, dus wellicht is het niet op SuSE aanwezig.
Nee, ik ben nog van de oude stempel, ik gebruik daar useradd voor. Veel van die nieuwerwetse tools zijn volstrekt overbodig, mss wel handig voor beginners, maar op die manier leer je niet echt hoe het systeem in elkaar zit. Daarom doe ik sommige dingen liever handmatig.
Maar daar is Yast aanwezig en kan je daar heel veel mee doen.
Idd, ook een handige tool die de gebruiker een beetje dom houdt :)
Maar zonder gekheid, ik ben ook niet tegen alle tools, als ze hun taak goed doen, en je als gebruiker ook weet wat een tool doet, en het een hoop tijd scheelt is het ook prima.

An unbreakable toy is useful to break other toys


  • Maarten60
  • Registratie: Oktober 2009
  • Nu online
Verschil tussen oude en nieuwe tools is voor mij als ‘semi’ beginner altijd lastig. Ik gebruik veel internet fora om iets op te zoeken en dan te proberen. ;). Waardoor ik afhankelijk ben van de kwaliteit van de antwoorden. Als ik het goed begrijp is useradd de meer technische en adduser de meer simpele? Ik ben in ieder geval zeer geholpen met jullie input, waarvoor dank.

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

adduser is een wat meer gebruiksvriendelijk script (in perl geschreven), welke gebruik maakt van useradd.
't is maar net wat je zelf fijn vindt, zelf hou ik niet zo van dat interactieve, en tik ik het liefst alle argumenten op één hele lange regel, want alles wat ik intik wordt in mijn .bash_history bewaard.
Alles wat ik de afgelopen 15 jaar ooit heb ingetikt staat nog steeds in mijn .bash_history, dus als ik een nieuwe gebruiker aanmaak op mijn daily driver hoef ik alleen maar useradd in te tikken en op PageUp (is bij mij history-search-backward, zie /etc/inputrc) te drukken, en dan kan ik door de regel een beetje te editen heel snel een nieuwe gebruiker aanmaken :)

An unbreakable toy is useful to break other toys


Acties:
  • +4 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

MartinMeijerink schreef op woensdag 13 september 2023 @ 07:40:
[...]

Hier draai je de zaken om, /bin/sh was altijd bedoeld voor bash, en rond 2009 ofzo (of in ieder geval voor jouw tijd denk ik, want daarom denk je wellicht dat dash altijd de standaard was) hebben ze bij Ubuntu (en kort daarna ook bij Debian) bedacht om dash de facto als default shell in te stellen.
Nee, /bin/sh is bedoeld om een POSIX shell te zijn (meestal bourne). Dat is inderdaad lang standaard bash geweest (de bourne *again* shell), omdat standaard POSIX sh niet beschikbaar was als open source. Maar omdat die steeds uitgebreider werd en bijgevolg ook steeds langzamer werd en meer geheugen gebruikte is gekozen om in plaats daarvan inderdaad dash te gaan gebruiken als een moderne (onderhouden) versie van een standaard POSIX shell zonder allerlei bash-specifieke dingen. Dat heeft inderdaad even pijn gedaan omdat er heel veel bashisms in startup scripts stonden, maar uiteindelijk maakt dat de hele zooi beter compatibel met POSIX-compliant systemen die geen bash als standaard interpreter hebben, en de belangrijkste drijfveer: het boot sneller.

De andere kant op gaan zóu geen probleem moeten zijn (scripts die wel in dash maar niet in bash werken heb ik nog nooit gezien maar ze zouden kunnen bestaan), daarom dat jij daar geen problemen mee hebt ondervonden. Is dus niet per se iets mis mee, maar maakt wel je boot langzamer als je nog een systeem hebt wat boot met sysvinit ipv systemd. Debian ondersteunde dat ook nog (met dpkg-reconfigure dash), tot de meest recente release (Bookworm) waar dat is afgeschaft.

Dat gezegd hebben zou ik zeer terughoudend zijn anderen te adviseren heel diep-gewortelde onderdelen van hun systeem aan te passen, ipv gewoon 'pas de login shell van het account aan' (of gebruik adduser ipv useradd, die doet het standaard goed). Als 't stuk gaat komen ze bij jou aan kloppen om t te fixen.

[ Voor 9% gewijzigd door CyBeR op 21-09-2023 02:50 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

Ok, dank voor de heldere uitleg. Maar wat sneller booten betreft, juist dit was één van de redenen dat ik sysvinit op mijn laptop gezet, en systemd erafgegooid, omdat het booten te lang duurde. Nu met sysvinit boot hij juist supersnel. Dit is natuurlijk een anekdotisch 'bewijs', maar in mijn geval werkt het wel. Ik zal straks als ik op mijn werk ben nog eens (tijdelijk) dash als standaard op mijn laptop instellen, en kijken hoe snel hij dan boot (ik vraag me af of het meetbaar is).

Update: net booten getest met dash vs bash, maar verschil is niet meetbaar, vanaf aanzetten laptop (Lenovo Thinkbook 15 G2 met Debian Bullseye) tot het verschijnen van de desktop (Window Maker) duurt in beide gevallen 15 seconden (6 seconden vanaf aanzetten tot de bootloader GRUB in beeld is, en dan nog 9 seconden voordat alles geladen is).

[ Voor 26% gewijzigd door MartinMeijerink op 21-09-2023 09:16 . Reden: update boottest dash vs bash ]

An unbreakable toy is useful to break other toys


  • deHakkelaar
  • Registratie: Februari 2015
  • Laatst online: 27-07-2024
MartinMeijerink schreef op donderdag 21 september 2023 @ 06:50:
Maar wat sneller booten betreft, juist dit was één van de redenen dat ik sysvinit op mijn laptop gezet, en systemd erafgegooid, omdat het booten te lang duurde. Nu met sysvinit boot hij juist supersnel. ... (ik vraag me af of het meetbaar is).
Dat is vreemd want systemv start processen sequentieel op (inittab etc).
En met systemd worden ze parallel opgestart afhankelijk van "dependencies".
$ man systemd-analyze
[..]
DESCRIPTION
       systemd-analyze may be used to determine system boot-up
       performance statistics and retrieve other state and tracing
       information from the system and service manager, and to verify the
       correctness of unit files. It is also used to access special
       functions useful for advanced system manager debugging.

       If no command is passed, systemd-analyze time is implied.


EDIT:
$ systemd-analyze blame
1min 42.509s open-iscsi.service
     36.232s postfix@-.service
     24.514s systemd-random-seed.service
     12.759s ssh.service
[..]

[ Voor 8% gewijzigd door deHakkelaar op 21-09-2023 18:20 ]

There are only 10 types of people in the world: those who understand binary, and those who don't


  • deHakkelaar
  • Registratie: Februari 2015
  • Laatst online: 27-07-2024
Vond deze ook nog ipv usermod:
$ man chsh
[..]
DESCRIPTION
       The chsh command changes the user login shell. This determines the
       name of the user's initial login command. A normal user may only
       change the login shell for her own account; the superuser may
       change the login shell for any account.

$ chsh
Password:
Changing the login shell for dehakkelaar
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]:


EDIT:
$ dpkg -S /usr/bin/chsh
passwd: /usr/bin/chsh

[ Voor 6% gewijzigd door deHakkelaar op 21-09-2023 18:36 ]

There are only 10 types of people in the world: those who understand binary, and those who don't


Acties:
  • 0 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 15:17

MartinMeijerink

Computerrorist

Dat is vreemd want systemv start processen sequentieel op (inittab etc).
En met systemd worden ze parallel opgestart afhankelijk van "dependencies".
Ik weet het, maar in de praktijk blijkt het (in dit ene specifieke geval) sneller te gaan.
En dan heb ik het nog niet eens gehad over die vage meldingen zoals "A stop job is running for ... (XXs / 2min)", die de boel nog eens extra traag maken.

Komt wellicht ook omdat ik alles zo minimaal mogeljk hou, en ook een superlichte windowmanager gebruik, en geen onnodige achtergrondprocessen enzo.
Vond deze ook nog ipv usermod:
$ man chsh
[..]
DESCRIPTION
       The chsh command changes the user login shell. This determines the
       name of the user's initial login command. A normal user may only
       change the login shell for her own account; the superuser may
       change the login shell for any account.
Dat bedoel ik dus, weer zo'n tooltje, terwijl je ook gewoon zelf /etc/passwd kan editen.
(Hoewel dit dan wel weer handig is als je geen root op die machine kan zijn)

An unbreakable toy is useful to break other toys


Acties:
  • +1 Henk 'm!

  • deHakkelaar
  • Registratie: Februari 2015
  • Laatst online: 27-07-2024
MartinMeijerink schreef op vrijdag 22 september 2023 @ 10:18:
Ik weet het, maar in de praktijk blijkt het (in dit ene specifieke geval) sneller te gaan.
Ik kan op dit moment weinig testen omdat m'n colo Xen hypervisor vol is.
Heb hier nog een NUC liggen die ik wil inzetten voor Xen inclusief debootstrap voor gemak.
Maar heb nog geen DIMM's of opslag voor die NUC.
MartinMeijerink schreef op vrijdag 22 september 2023 @ 10:18:
Dat bedoel ik dus, weer zo'n tooltje, terwijl je ook gewoon zelf /etc/passwd kan editen.
(Hoewel dit dan wel weer handig is als je geen root op die machine kan zijn)
Ach met Linux zijn er vaak meerdere wegen naar Rome.
Voordeel is idd wel dat je geen root rechten nodig hebt en je geen foutjes kunt maken in dat belangrijke passwd bestandje.
EDIT: Ow en hij zit standaard in de passwd package.

[ Voor 3% gewijzigd door deHakkelaar op 22-09-2023 17:08 ]

There are only 10 types of people in the world: those who understand binary, and those who don't


Acties:
  • +2 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

We gaan nu enorm off-topic en de TS heeft 't probleem al opgelost. Willen jullie verder discussiëren, doe dat dan lekker in een apart topic. Anders ga ik hier de bezem pakken. ;)

[ Voor 3% gewijzigd door Hero of Time op 22-09-2023 19:54 ]

Commandline FTW | Tweakt met mate

Pagina: 1