scriptdir=`dirname $0` not working

6

I am trying to get the directory where my script is in by using:

scriptdir=`dirname $0`

but this gives me the following error:

dirname: invalid option -- 'b'
Try `dirname --help' for more information.

and I tried what they recommended (i.e dirname --help) and it said command not found. How can I fix this problem?

I am trying to use the scriptdir variable so I can compile the following java program:

java -mx800m -cp "$scriptdir/*" edu.stanford.nlp.parser.lexparser.LexicalizedParser -retainTmpSubcategories -outputFormat "typedDependencies"  -outputFormatOptions "basicDependecies" edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ./sentences/100000.txt > ./parsedsentences/100000.txt

kolonel

Posted 2014-01-28T05:49:10.540

Reputation: 175

Answers

9

dirname -- "$0"

The -- (dash dash) stops dirname from processing any options in the argument. Always quote $0 in case there are spaces in the name.

Ricky Beam

Posted 2014-01-28T05:49:10.540

Reputation: 629

3

use quotes. It may fix your issue.

scriptdir=`dirname -- "$0"`

I personnaly prefer this notation in bash scripts, but it is not mandatory:

scriptdir="$(command dirname -- "${0}")"

EDIT:

You may find the answer in the replies to script full name and path $0 not visible when called.

EDIT 2:

Integraded the right answer.

Biapy

Posted 2014-01-28T05:49:10.540

Reputation: 959

@Blapy No it didn't work but thanks for trying. – kolonel – 2014-01-28T06:07:47.367

I added another option to my answer. – Biapy – 2014-01-28T06:11:21.360

$0 is '-bash' (ie. a login shell) – Ricky Beam – 2014-01-28T07:15:55.677

bash ~ $scriptdir="$(command dirname "${0}")" dirname: opción inválida -- 'b' Try 'dirname --help' for more information. bash ~ $ – GnP – 2014-01-31T20:29:22.427