UNIX巧妙實現動態路徑

china_yebin發表於2009-10-05

使用以下指令碼可以避免程式使用絕對路徑,增強程式的可移植性和可用性。
該方法靈感來自於Oracle的oui,並加以改良增加其通用性。
該文件包含shell和perl的程式碼,其他程式碼省略。

#/***************************/
#Oracle OUI的解決方法(很佩服啊)
#1.首先獲得$0執行程式的相對路徑(dirname命令實現);
#2.判斷是否當前目錄“.”,是執行pwd命令獲得目錄絕對路徑;
#3.不是當前目錄的用pwd命令獲得當前目錄,然後加上相對目錄組成全路徑。
#/***************************/
CMDDIR=`dirname $0`

if [ "$CMDDIR" = "." ]; then
    CMDDIR=`pwd`;
fi

# Replace relative path with fully qualified path.
if [ ! "`echo $CMDDIR|grep '^/'`" ]; then
    CMDDIR=`pwd`/$CMDDIR;
fi
#/***吾改進之,避免出現..目錄***/
cd $CMDDIR
CMDDIR=`pwd`

 

#/***************************/
#借鑑oracle OUI perl的解決方法。
#/***************************/
#!/usr/bin/perl
use  Cwd;
use File::Basename;

my $cwd;
if ($0 =~ m{^/}) {
  $cwd = dirname($0);
} else {
  my $dir   =   getcwd();
  $cwd = dirname("$dir/$0");
}
chdir($cwd);
my $cwddir = getcwd();

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13605188/viewspace-616012/,如需轉載,請註明出處,否則將追究法律責任。

相關文章