Root nemá v $PATH systémové utility

Root nemá v $PATH systémové utility
« kdy: 12. 06. 2022, 19:59:57 »
I když mě linux, konkrétně momentálně Debian 5.10.113-1 , baví, nemůžu se mu věnovat tolik, kolik bych chtěl. Omezuje se to na občasné vylepšování domácích udělátek. A tak nové distribuce jsou častější, než se stačím něco naučit v té předchozí.
Nic moc od toho nechci, jen využívat příkazy jako třeba modprobe, nebo insmod jako root uživatel. Nejnověji mám s tím problém, protože soubor /root/bashrc je absolutné prázdný a tímpádem mě shell vrací "command not found". Cože?
Tak jsem se dal do hledání a našel jsem, že teď je to někde v /etc/profile a tam jsem našel tohleto:
Kód: [Vybrat]
# /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"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Přidávání $PATH jsem řešil opravdu hodně let dávno a tak mě zabte, ale chová se to podle podmínky else. Byl by někdo ochotný ztratit dvě minuty ze svého života a pár větama mě to osvítit, než provedu něco blbě?
Předem stokrát děkuji.
« Poslední změna: 12. 06. 2022, 22:02:08 od Petr Krčmář »


alex6bbc

  • *****
  • 1 666
    • Zobrazit profil
    • E-mail
Re:Problém s $PATH zabte mě.
« Odpověď #1 kdy: 12. 06. 2022, 20:06:28 »
tak si tam hod echo a zkus to spustit jako shell skript rucne

_Jenda

  • *****
  • 1 605
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Problém s $PATH zabte mě.
« Odpověď #2 kdy: 12. 06. 2022, 20:41:05 »
Já si matně vzpomínám, že profile se spouští jenom když je to "login shell" nebo možná naopak, a když se přepneš přes nějaké sudo nebo su, tak to třeba není login shell a tak se to nespustí.

V balíčku "bash" je soubor /etc/skel/.bashrc normálně pořád https://packages.debian.org/bullseye/amd64/bash/filelist takže by se měl při založení uživatele vytvořit v jeho home, takže máš možná nějaký jiný problém. (v dotazu to máš omylem jako bashrc bez tečky)

k3dAR

  • *****
  • 3 033
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Problém s $PATH zabte mě.
« Odpověď #3 kdy: 12. 06. 2022, 20:49:34 »
1. Debian 5.10.113-1 to cislo neni verze Debianu, ale Linux kernelu/jadra

2. nema byt /root/bashrc ale /root/.bashrc (tedy s TECKOU na zacatku)

3. jakej program hlasi "command not found" ?
   pokud chces pustit ten modprobe, tak ten se musi poustet jako root,
   tzn. pokud si roota pri instalaci (nebo pak) aktivoval tak:
Kód: [Vybrat]
su -
(zadas heslo roota)
modprobe blabla
   pokud root aktivni nemas, tak:
Kód: [Vybrat]
sudo modprobe blabla
(zadas heslo SVEHO uzivatele)

tim ze to takto pustis jako ci "jako" root, tak ten v $PATH bude mit sbin adresare

Re:Problém s $PATH zabte mě.
« Odpověď #4 kdy: 12. 06. 2022, 20:56:21 »
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?


FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #5 kdy: 12. 06. 2022, 21:16:36 »
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?
A přepínáš se pomocí su   , nebo su -     ? Pokud to první , tak se Ti nenačte prostředí roota , tedy ten  .bashrc, ve kterém je PATH definovaná.

FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #6 kdy: 12. 06. 2022, 21:43:48 »
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?
A přepínáš se pomocí su   , nebo su -     ? Pokud to první , tak se Ti nenačte prostředí roota , tedy ten  .bashrc, ve kterém je PATH definovaná.
Edit time je zde krátký:
Tedy : … nenačte se ti prostředí roota a tedy jeho PATH. Ani eventuálně /root/.bashrc, pokud existuje.

FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #7 kdy: 12. 06. 2022, 21:52:35 »
I když mě linux, konkrétně momentálně Debian 5.10.113-1 , baví, nemůžu se mu věnovat tolik, kolik bych chtěl. Omezuje se to na občasné vylepšování domácích udělátek. A tak nové distribuce jsou častější, než se stačím něco naučit v té předchozí.
Nic moc od toho nechci, jen využívat příkazy jako třeba modprobe, nebo insmod jako root uživatel. Nejnověji mám s tím problém, protože soubor /root/bashrc je absolutné prázdný a tímpádem mě shell vrací "command not found". Cože?
Tak jsem se dal do hledání a našel jsem, že teď je to někde v /etc/profile a tam jsem našel tohleto:
Kód: [Vybrat]
# /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"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Přidávání $PATH jsem řešil opravdu hodně let dávno a tak mě zabte, ale chová se to podle podmínky else. Byl by někdo ochotný ztratit dvě minuty ze svého života a pár větama mě to osvítit, než provedu něco blbě?
Předem stokrát děkuji.
Ještě jinak: prázdný /root/.bashrc není důvodem , proč se nenajdou systémové  příkazy jako insmod.
V ~/.bashrc jsou individuální modifikace pro uživatele, které si tam může a nemusí zapsat, určitě ne cesta roota k systémovým příkazům

FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #8 kdy: 12. 06. 2022, 21:58:35 »
1. Debian 5.10.113-1 to cislo neni verze Debianu, ale Linux kernelu/jadra

2. nema byt /root/bashrc ale /root/.bashrc (tedy s TECKOU na zacatku)

3. jakej program hlasi "command not found" ?
   pokud chces pustit ten modprobe, tak ten se musi poustet jako root,
   tzn. pokud si roota pri instalaci (nebo pak) aktivoval tak:
Kód: [Vybrat]
su -
(zadas heslo roota)
modprobe blabla
   pokud root aktivni nemas, tak:
Kód: [Vybrat]
sudo modprobe blabla
(zadas heslo SVEHO uzivatele)

tim ze to takto pustis jako ci "jako" root, tak ten v $PATH bude mit sbin adresare
Sorry k3d, přehlídl jsem že už jsi to napsal s tím mínus.
Ale je divný,že tam už má ten # v promptu, užík by tam měl mít  $   , tedy jestli se na to ještě hraje…
« Poslední změna: 12. 06. 2022, 22:02:09 od FKoudelka »

Re:Problém s $PATH zabte mě.
« Odpověď #9 kdy: 12. 06. 2022, 22:03:07 »
Tak omlouvám se, při prvním polibku s Debianem jsem si zapamatoval su bez znaménka mínus a nevím, kdy se to změnilo, opravdu nemám čas na changelogy. Tisíceré díky všem za trpělivost.

FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #10 kdy: 12. 06. 2022, 22:49:49 »
Tak omlouvám se, při prvním polibku s Debianem jsem si zapamatoval su bez znaménka mínus a nevím, kdy se to změnilo, opravdu nemám čas na changelogy. Tisíceré díky všem za trpělivost.
Takhle je to v shellu odjakživa :-) ale v pohodě
« Poslední změna: 12. 06. 2022, 22:52:18 od FKoudelka »

k3dAR

  • *****
  • 3 033
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Problém s $PATH zabte mě.
« Odpověď #11 kdy: 13. 06. 2022, 02:28:14 »
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)

FKoudelka

Re:Problém s $PATH zabte mě.
« Odpověď #12 kdy: 13. 06. 2022, 09:39:58 »
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)

No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”

FKoudelka

Re:Root nemá v $PATH systémové utility
« Odpověď #13 kdy: 13. 06. 2022, 09:43:51 »
 Jen pro pořádek:
Do cesty tam přidáš podobně jako:
export PATH="$HOME/bin:$PATH"

tecka

  • ***
  • 158
    • Zobrazit profil
    • E-mail
Re:Root nemá v $PATH systémové utility
« Odpověď #14 kdy: 13. 06. 2022, 14:05:32 »
No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
export PATH="$HOME/bin:$PATH"

Nemotej mu hlavu s home, když řeší sbin a nebude nikam nic dopisovat, ale prostě, když chce login shell, tak použije to su tak, aby dostal login shell. Ty vždycky, když něco napíšeš, tak to je perla.