From: Kenan Dogan (kndogan@yahoo.com)
Date: Thu 08 Sep 2005 - 06:16:46 EEST
istediginiz sey iki yolla yapilabilir :
1. iyi olmayan yontemde betik(=script) soyle olabilir:
cd /istenen-dizin
sh
Burada, istediginiz dizine gectikten sonra fazladan bir kabuk(=shell) alir ve
boylelikle sizi gectiginiz dizinin icinde birakir. Dilediginiz islemleri
yapabilirsiniz. Ctrl-D veya exit yaptiginizda, almis oldugu fazlalik kabugu
sonlandirarak, betigi calistirdiginiz siradaki dizine doner.
SAKINCASI: 1 nci kabukta mi yoksa 2 ncisinde mi oldugunuzu karistirip,
(ozellikle dizin) silme islemi yaparsaniz, yanlis seyleri silme olasiliginiz
var. Yani dikkatli olmanizi gerektirir. Ayrica, ozellikle birden fazla kez
calistirdiginizda, kabuk surecleri(=process) sayisi kabarir. "ps" ile
baktiginizda:
bash
sh
sh
sh
gibi bir gorunumle karsilasirsiniz.
2. iyi olan yontemde ise hicbir sakinca yok; yalniz, kabuk olarak (zaten
cogunlukla kullanilmakta olan) "bash"i kullaniyor olmaniz ve birazcik belge
okumaniz gerekir (csh, ksh, ... v.b. diger kabuklarda olmadigini saniyorum,
ama emin degilim) :
http://www.belgeler.org/bashref/bashref_directory-builtins.html
Buradaki 3 yerlesigi(=built-in) ve ozellikle de "pushd"yi okuyun, biraz
cabayla isinizi gorecek kucuk bir betik yapabilirsiniz.
http://www.belgeler.org/bashref/bashref_directory-builtins-pushd.html
adresindeki :
"dizin
icinde bulunulan dizini yiginin tepesi yapar ve 'cd dizin' komutuna
esdeger bir islemle dizin'e gecilmesini saglar."
ifadesi sizin icin onemli bir ipucu.
Kolay gelsin.
--- Nejat AYDIN <nejataydin@superonline.com> wrote:
> Bekir SONAT Cortex wrote:
> >
> > Bir de script icinde uygulanan
> > cd /falan/fismekan
> > komutunun,
> > script bitiminde de
> > gecerli olmasini nasil saglayabilirim ?
> > Yani girdigi dizinde kalmasini ?
> > Yoksa yetki-izin ozelliginden dolayi bu olanaksiz mi?
>
> Yetki ozelliginden degil, fakat su ozellikten dolayi bunu yapamazsin:
> Calistirdigin shell scripti bir alt shell'de calisir
> ve alt shell ortami (environment'i) ust shell'in ortamini etkilemez.
> O andaki aktif dizin (current working directory) ortamin bir parcasidir.
> Dolayisiyla script icindeki cd komutuyla ust shell'deki aktif dizini
> degistiremezsin, sadece script'in o anda calismakta oldugu alt shell'deki
> dizin degisir.
>
> Eger script'i,
> . ./ezcd # ya da scriptin ismi herneyse
> komutuyla calistirirsan bir alt shell acilmayacagindan, yani
> script o andaki shell'de calisacagindan, ancak o zaman istemis
> oldugun seyi gerceklestirebilirsin.
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama