2013-11-04 15 views
6

bir komut dosyası aşağıdaki gibi vardır:Çağrı göreli yolları kullanarak başka komut bir kabuk komut dosyası

#!/bin/csh 
echo "This is the main programme" 
./printsth 

Ben göreli yolları kullanarak bu komut dosyası içinde komut aramak istiyorum. Bunu yapmanın bir yolu var mı? Göreceli yollar ile çağrı komutumun olduğu yere göre yolu kastediyorum. Sen $cwd ile birlikte bulunduğumuz dizin başvurabilir

+1

Neden bunun işe yaramadığını düşünüyorsun? Bulunduğunuz yeri görmek için kabuk hata ayıklamayı, yani 'set -vx' (veya csh için benzer) ve echo $ cwd' vb. İyi şanslar. – shellter

cevap

4

. Geçerli çalışma dizinine göre bir yolla 'u aramak isterseniz, çizgiyi $cwd ile başlatın. Eğer geçerli dizinde , aramak istiyorsanız

Örneğin, de ki:

$cwd/../printsth 

bir emin olun:

$cwd/printsth 

Yukarıdaki bir dizin aramak isterseniz csh betiği olsa da (yani ilk satır #!/bin/csh). bir sh veya bash senaryo ise, $PWD değil $cwd ('Mevcut çalışma dizininin' için) kullanmak gerekir.

DÜZENLEME:

Eğer komut dosyasının dizininde değil, şimdiki çalışma dizini için bir dizin göreli istiyorsanız, o zaman bunu yapabilirsiniz: aynı dizine $SCRIPTDIR ayarlayacaktır

setenv SCRIPTDIR `dirname $0` 
$SCRIPTDIR/printsth 

orijinal senaryo Daha sonra buna göre yollar oluşturabilirsiniz. göreli yol ana programı çalıştıktan hangi dizinde bağlı olacağı şekilde ./printsth olarak

+0

Eğer $ cwd ve kullanmadan yapabilirsiniz $ pwd – Programmer

+0

Aslında csh' 'varsayılan' yüzden, geçerli çalışma dizini herhangi bir şekilde kullanmak./Printsth' zaten CWD'sindeki bakacağız olduğunu. Orijinal betikle aynı dizine bakmak istiyorsanız, aslında biraz daha zor. Hangisini istiyorsun? –

+0

Ben orig script – Programmer