Hali!
Idegesített egy ideje, hogy ha screen használok, és mondjuk ugyanabban a könyvtárban kellene sok ablakból dolgoznom, akkor mindig cd-zhetek. Helyette gondoltam írok egy kis scriptet:
#!/bin/bash
lwd=~/bin/lwd
echo "#!/bin/bash" >$lwd
echo "cd '"`pwd`\' >$lwd
chmod 755 $lwd
De persze lwd -t futtatva nem történik semmi, hisz az egy külön shellt indít, és csak abban változik a current working directory.
Hogyan tudok olyan shell scriptet írni/futtatni, hogy a végén az általa végrehajtott cd utasítás a futtató shell számára is érvényes legyen?
- 766 megtekintés
Hozzászólások
esetleg
. ${lwd}
(pötty szóköz) indítandó állomány >> ez az adott shellben futtatja a szkriptet
Ha átadod a tudásod neked attól még nem lesz kevesebb belőle..
- A hozzászóláshoz be kell jelentkezni
thx!
de ha jól selytem exportálni, hogy még a .-se kelljen a futtatásnál, akkor nem is lehet?
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
hm, ez tetszik, azt hittem, hogy ilyet nem is lehet ... .
- A hozzászóláshoz be kell jelentkezni
export az a gyerek shellekben is elérhetővé teszi a változót tartalmával együtt.
Vagyis javallott exportálni, ha más meghívott shellből/programból használni akarod a aváltozó értékét.
Ha átadod a tudásod neked attól még nem lesz kevesebb belőle..
- A hozzászóláshoz be kell jelentkezni
pontosan ezért írtam idézőjelek közé, mert most nem változót szeretnék exportálni, hanem, hogy ha egy shell script így néz ki
#!/bin/bash
cd /tmp/akarmi
és ezt lefuttatom akárhol, akárhogyan, akkor utána a szülőnek futás után a current working directory-ja legyen a /tmp/akarmi
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
#...
echo "#!/bin/bash" >$lwd
echo "cd '"`pwd`\' >$lwd
#...
Ezt így miért?
Mármint ha jól olvasom, az idézett sorok közül a második felülírja az elsőt...
Nem így kellett volna?
#...
echo "#!/bin/bash" >$lwd
echo "cd '"`pwd`\' >>$lwd
#...
--
"It all keeps adding up
I think I'm cracking up
Am I just paranoid?
I'm just stoned"
/Green Day - Basket Case/
- A hozzászóláshoz be kell jelentkezni
jaja, de ez most úgy sem számít
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Tömör válasz: sehogy.
Hosszú válasz: ha új processzt hajtasz végre, akkor abban bizonyos változásokat a *szülő* processz nem fog érzékelni (könyvtárváltás, változómódosítás); másokat igen (fájl létrehozása pl.) A változók (és ide tartozik az aktuális könyvtár neve) a processzeknek olyan memóriaterületein tárolódnak, amihez másnak nincs köze. Exportálni éppen lehet, de ekkor is csak *öröklődnek* .
Itt fentebb valaki javasolta a . szkript
futtatási formát, ez pont ezt küszöböli ki, hisz nem másik processzben fog lefutni a szkript.
- A hozzászóláshoz be kell jelentkezni
Esetleg helyette a ~/.bashrc-be ez?
function lwd () {
. ~/bin/lwd
}
udv. rubasov
- A hozzászóláshoz be kell jelentkezni