Function instead of alias in C shell login script

2020-02-10 18:44发布

问题:

I saw in this topic that you can add a function in the shell login script instead of an alias if you want to use parameters. However, I placed the following code inside my .cshrc file in the section with aliasses:

function gf()
{
    grep -n $1 `find .` | grep -v "can't open"
}

But when I type source .cshrc, I get the error message: Badly placed ()'s. Is the syntax different for a C shell than in a Bash shell? If so, what is the correct syntax?

回答1:

Unfortunately, you can't define functions in csh, like you can in most other shells. This feature does not exist in csh.

The only alternative is to create a script and place it in a directory on your PATH e.g. ~/bin.



回答2:

Here is my solution:

#!/bin/csh

if ("$1" == "run") goto $2

echo "Now in default mode"

echo "Calling myself"

csh -f dummy run sub1

csh -f dummy run sub2

exit


sub1:

echo "In sub1"

exit

sub2:

echo "In sub2"

exit