可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Say I put an executable tcsh file in /path/to/my_script.csh
and my current directory is anywhere, for example I'm in /path
So I type to/my_script.csh
I want to have a line in my_script.csh that will return "/path/to/my_script.csh" - like ruby's
__FILE__
回答1:
If you want to ensure the same result (full path and script name) try something like this:
... rootdir=`/bin/dirname $0` # may be relative path rootdir=`cd $rootdir && pwd` # ensure absolute path zero=$rootdir/`/bin/basename $0` echo $zero ...
Then you can call it as foo.sh, ./foo.sh, some/lower/dir/foo.sh and still get the same result no matter how it is called.
回答2:
In c shell, try like this:
set rootdir = `dirname $0` set abs_rootdir = `cd $rootdir && pwd` echo $abs_rootdir
回答3:
#!/bin/tcsh echo "I am $0."
回答4:
If you want an absolute path then this should help you out:
#!/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"
Source: http://tipsarea.com/2013/04/11/how-to-get-the-script-path-name-in-cshtcsh/