3

I am new to bash so please bear with me if this is a dumb question :

What I actually want to type in the shell is like this:

javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked

The fact is, if I manually type the above line into bash, it executes with no error. However, if I craft a customized function in .bashrc like this:

function compile() { 'javac -classpath "emarket.jar" '$@'.java -Xlint:unchecked';}

And issue this command in bash:

compile Testclient

It gets to an error saying that :

bash: javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked: command not found

I reckon the function compile() in .bashrc should generate the same command in bash, but I really cannot get through this, can anyone help me? Many thanks in advance!

2 Answers 2

8

remove the single quotes surrounding the whole command, and use double quotes around $@

function compile() { 
  javac -classpath "emarket.jar" "$@".java -Xlint:unchecked;
}

see here for quoting variables examples.

Sign up to request clarification or add additional context in comments.

Comments

1

The problem is the ' quotes in your compile function. This causes the shell to not break things up at whitespace and treat the entire string as the command (rather than the first word as the command, and the rest as arguments.) Delete those and it should work

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.