tty szám ill. bejelentkezés helyének kiiratása bash promptba

Fórumok

tty szám ill. bejelentkezés helyének kiiratása bash promptba

Hozzászólások

Köszi a válaszokat. Már csak arra keresek választ, hogyan oldható meg a PS1 környezeti változó állítása egy bash scriptből úgy, hogy arra a konzolra vonatkozzon amiből el lett indítva.
Azaz
alias pr_tty='temp=`tty`; echo ${temp:5}'
PS1="\\u@\\h \\w `pr_tty`\\$ "
hogyan oldjam meg hogy ezt ne csak .bashrc ill .profileba illesztve tudjam alkalmazni, hanem egy rövid bash scripten belül?
Így csak azon a konzolon élne amelyiken elindítom a "custom promptot" (és a .bashrct nem illik babrálni ott ahol kellene, mert mások is használják ugyanazzal a hallgatói loginnal).

[quote:e258bc4be4="prygme"]Köszi a válaszokat. Már csak arra keresek választ, hogyan oldható meg a PS1 környezeti változó állítása egy bash scriptből úgy, hogy arra a konzolra vonatkozzon amiből el lett indítva.
Azaz
alias pr_tty='temp=`tty`; echo ${temp:5}'
PS1="\\u@\\h \\w `pr_tty`\\$ "
hogyan oldjam meg hogy ezt ne csak .bashrc ill .profileba illesztve tudjam alkalmazni, hanem egy rövid bash scripten belül?

Roppant egyszeruen, nem a .bashrc-be ill .profile-ba rakod, hanem mondjuk a custom_prompt nevu file-be (termeszetesen eleillesztve a #!/bin/bash sort :-)[quote:e258bc4be4="prygme"]
Így csak azon a konzolon élne amelyiken elindítom a "custom promptot" (és a .bashrct nem illik babrálni ott ahol kellene, mert mások is használják ugyanazzal a hallgatói loginnal).

Zsiraf :-)

Hi!

Amit persze futtathatova is kell tenned.

By(t)e
TBS::Antiemes

A tty program nem jó erre? A kimenete egy az egyben az, amit szeretnél. Na jó, esetleg az utat levághatod előle...

[quote:1f99eca2a8="szaszg"]Roppant egyszeruen, nem a .bashrc-be ill .profile-ba rakod, hanem mondjuk a custom_prompt nevu file-be (termeszetesen eleillesztve a #!/bin/bash sort :-)

ezt így gondoltam én is, de amikor kipróbáltam,
[code:1:1f99eca2a8]#!/bin/bash
alias pr_tty='temp=`tty`; echo ${temp:5}'
PS1="DebianWS1 <`pr_tty`> \t >>[/code:1:1f99eca2a8]

Amikor futtatási joogt kapott és lefuttattam,

~$ ./nprompt
./nprompt: line 1: temp: command not found

lett a válasz.
Egy bash scriptben valószínűleg másképp kell aliasokat állítani mint közvetlenül kiadva a parancsot ill .bashrcben.

[quote:cbca624aa5="Zs"]A tty program nem jó erre? A kimenete egy az egyben az, amit szeretnél. Na jó, esetleg az utat levághatod előle...

Nekem a promptba kell, magában nem elég de felhasználom.

[quote:901c7b4b92="prygme"]
[code:1:901c7b4b92]#!/bin/bash
alias pr_tty='temp=`tty`; echo ${temp:5}'
PS1="DebianWS1 <`pr_tty`> \t >>[/code:1:901c7b4b92]

Minek az alias?
Minek a echo ${temp:5}?
Semmi értelme.

PS1="DebianWS1 <`tty`> \t"

Sajnálattal kell megjegyeznem, de itt több hiba is elhangzott.
a) Tehát egy parancs ugyanúgy kell, hogy parancssorban működjön, mint ha szkript-be írod (ez kérem nem C-shell, hogy interaktívan és nem interaktívan mást csináljon)
b) ha al-shellben futtatsz valamit, akkor az a büdös életben nem fog a szülő shellben átállítani shell változót. Magyarul ne úgy futtasd a szkriptedet, hogy:
$ ./szkript
hanem használd a shell kifejezetten erre szóló . (pont) nevű parancsát:
$ . ./szkript
(megkérem a bash-ista kollegákat, hogy ne akarják a tisztelt kezdő kollegát a . helyett a source nevű parancsra rábeszélni, ugyanis az C-shellen kívül nem megy sehol - se POSIX-shellben, se Korn-shellben, se eredeti Bourne-shellben, ellentétben a fent vázolt pont nevű paranccsal)
c) nem látom át, hogy az miért is jó, hogy definiálsz egy alias-t, ami nem csinál semmit
d) mi a franc a probléma azzal, hogy a PS1-be beleteszel egy parancskihelyettesítést?
PS1='$(tty) \$ '
oszt máris a teljes elérési útvonallal adott terminálnév látszik, meg a szokásos dollár-szóköz
e) az meg már végképp hab a tortán, hgy mi a sunyiért nem olvas bele valaki egy ilyen kérdés előtt az általa használt shell dokumentációjába. man bash, keress rá a PS1 -re (nálam ez /PS1 és utána egy n, mert a második találatnál tárgyalja a PS1 változónak adható értéket), majd a sor végéig se kell olvasni, és ott egy újabb hivatkozás a PROMPTING nevű szakaszra, tehát /PROMPTING és máris ott vagyok, ahol szerepel a hanyattörtvonal l kombináció, mint az aktuális terminál nevének "basename" alakja (gy. k: elérési útvonal nélkül), azaz a megoldás:
csinálsz egy szkriptet, aminek neve mondjuk prompt, amiben ennyi áll:
PS1='\l \$ '
export PS1
osztán valahányszor bejelentkezel, kiadod a:
. ~/prompt
parancsot és készen vagy.
Ja, ha nem mondtam volna:
RTFM

es arrol tud valaki hogy a promptba kiiratni hogy hany uj/regi level van pl a postafiokban?

[quote:9143c86816="_ventura_"]es arrol tud valaki hogy a promptba kiiratni hogy hany uj/regi level van pl a postafiokban?

Mint némi szívás után megtudtam, bash-nél van egy PROMPT_COMMAND nevű környezeti változó, amit parancsként végrehajt minden prompt-kiíráskor. Úgyhogy ha van scripted, ami megszámolja a leveleidet, akkor kész vagy.

Yessss :twisted: !
És a bash-alapú fork-bomb is működik:
[code:1:45a607dc84]
export PROMPT_COMMAND='xterm&'
[/code:1:45a607dc84]
Előtte valamelyik szöveges konzolon érdemes bekészíteni egy 'killall -9 xterm'-et...

A bash promptba szeretném kiiratni azt, hogy honnan használom azt a shellt.
Azaz melyik ttyXtől, illetve távoli bejelentkezés esetén melyik ip címről (vagy dns név) jelentkeztem be arra gépre.
pl igy:
prygme@server1.net.cc temp tty1$
vagy
prygme@server1.net.cc temp dialup445-23.freestart.hu$

Hogyan lehet ezt beállítani? Valamelyik környezeti változóban szerepelnie kell imho, ahonnan fingernek is ki kell olvasnia az infot.

[quote:22650bfac4="prygme"]A bash promptba szeretném kiiratni azt, hogy honnan használom azt a shellt.

Szerintem..
. a who feldarabolt kimenetéből állítsd össze az PS1 változót.. és rakd be
valamelyik ssh rc-be ami lefut bejelentkezéskor.
Fri

[quote:38abdffc23="Frimen"][quote:38abdffc23="prygme"]A bash promptba szeretném kiiratni azt, hogy honnan használom azt a shellt.

Szerintem..
. a who feldarabolt kimenetéből állítsd össze az PS1 változót.. és rakd be
valamelyik ssh rc-be ami lefut bejelentkezéskor.
Fri

Ez akkor jó, ha az adott gépre csak egyszer vagyok bejelentkezve. De mi van akkor ha többször is? A who az összes logint számon tartja és szűrni csak user szitnen tudom. De hogyan tudhatom meg hogy az abba a shellba amibe épp írom honnan jelentkeztem be?
Van erre megfelelő who kapcsoló?, a manban nem találtam.

Jelentkezz be egy gépre többször, addki a who am i parancsot - az eredemény nem ugyanaz, ergo ezt használhatod

[quote:cbccf52a0f="prygme"]A bash promptba szeretném kiiratni azt, hogy honnan használom azt a shellt.
Azaz melyik ttyXtől, illetve távoli bejelentkezés esetén melyik ip címről (vagy dns név) jelentkeztem be arra gépre.
pl igy:
prygme@server1.net.cc temp tty1$
vagy
prygme@server1.net.cc temp dialup445-23.freestart.hu$

Hogyan lehet ezt beállítani? Valamelyik környezeti változóban szerepelnie kell imho, ahonnan fingernek is ki kell olvasnia az infot.

rakd be a .bashrc-be/ .profiles-be, vagy ahonnet mindig lefut:[code:1:cbccf52a0f]
alias pr_tty='temp=`tty`; echo ${temp:5}'
PS1="\\u@\\h \\w `pr_tty`\\$ "
[/code:1:cbccf52a0f]

[quote:792ba354f7="prygme"]
Ez akkor jó, ha az adott gépre csak egyszer vagyok bejelentkezve. De mi van akkor ha többször is? A who az összes logint számon tartja és szűrni csak user szitnen tudom. De hogyan tudhatom meg hogy az abba a shellba amibe épp írom honnan jelentkeztem be?
Van erre megfelelő who kapcsoló?, a manban nem találtam.

Hmm..
.. szerintem az who -m kapcsolo a barátod.
Fri