2010-04-01 18 views

cevap

9

Sam'i sağlamak istiyorsanız E sonucu (tam yol ve komut adı) böyle bir şey deneyin:

Sonra
... 
rootdir=`/bin/dirname $0`  # may be relative path 
rootdir=`cd $rootdir && pwd` # ensure absolute path 
zero=$rootdir/`/bin/basename $0` 
echo $zero 
... 

Alacağınız hala foo.sh, ./foo.sh, bazı/alt/dir/foo.sh olarak arayıp tamir aynı sonuç nasıl denirse alınsın. c kabuğu olarak

+0

Teşekkür! Gerçekten iyi çalış. –

2
#!/bin/tcsh 
echo "I am $0." 
7

böyle deneyin:

set rootdir = `dirname $0` 
set abs_rootdir = `cd $rootdir && pwd` 
echo $abs_rootdir 
+2

Bana çeviri için teşekkürler. Sorunun görünüşte görünüşe göre csh istediği ve sözdizimi kabul ettiği garip. – stevesliva

+0

Maalesef #!/Bin/csh komut dosyamda bunu yaptığımda ve göreli bir yolla (./myscript.csh) çalıştırdığımda, her zaman ana dizini döndürür. Bu senaryoyu nereye koyduğum önemli değil. 'dirname $ 0', '.' ve 'pwd' benim $ HOME'ımı döndürür – mdiehl13

+0

@ mdiehl13 Açıkladığınız sorun bana ait değil. Hala aynı sorunu görüyor musunuz? .cshrc dosyanızı kontrol etmeniz ve dizin yolu ayarıyla ilgili herhangi bir özel konfigürasyon olup olmadığını kontrol etmeniz gerekebilir. – euccas

0

mutlak bir yol istiyorsanız o zaman bu size yardımcı olacaktır:

#!/bin/tcsh -f 
set called=($_) 

if ("$called" != "") then ### called by source 
    echo "branch 1" 
    set script_fn=`readlink -f $called[2]` 
else       ### called by direct excution of the script 
    echo "branch 2" 
    set script_fn=`readlink -f $0` 
endif 

echo "A:$0" 
echo "B:$called" 
set script_dir=`dirname $script_fn` 

echo "script file name=$script_fn" 
echo "script dir=$script_dir" 

Kaynak: http://tipsarea.com/2013/04/11/how-to-get-the-script-path-name-in-cshtcsh/

İlgili konular