Reputation: 11363
For the current project, I need to run the GENESIS genetic algorithm program, and the professor has provided a csh script that allows us to easily pass in the fitness function as well as external initilization and template files.
The script calls the makefile to build the executable, adding the fitness function to the mix and produces an executable ga.FIT
, where FIT is the name of the finess function source file.
On the machines at school runnung Ubuntu 10.04, there is no problem whatsoever running this script. However, when I try to run it on my machine, I get the following output:
./go cancer2 ex0
Note: Genesis files modified for use on USM Linux cluster
Note2: ga.cancer2 is your executable (e.g., if you need to use the debugger)
making executables ...
make: `ga.cancer2' is up to date.
make: `report' is up to date.
running ga.cancer2 ex0 ...
ga.cancer2: Command not found.
But the executable IS there! I can manually call it separately via ga.cancer2 ex0
and it runs at both the csh and bash prompts. I've verified its not a permissions issue as the equivalent of chmod 755
has been set to the executable.
Is this something specific to csh, and should I look into modifying the script for bash, or stick to remoting in to the school system?
Upvotes: 0
Views: 1758
Reputation: 263497
It looks like ga.cancer2
is in your current directory. Basile's answer should work, but it's probably a better idea to modify the script so it invokes ./ga.cancer2
rather than ga.cancer2
.
In general, having .
in your $PATH
is a potential security risk (regardless of which shell you're using). Imagine cd
ing into a directory in which someone has planted an ls
command that does something evil. If you make sure .
isn't in your $PATH
(and get into the habit of typing ./command
to execute a command in your current directory), you avoid this risk.
Having .
at the end of $PATH
is less risky -- but since the most common name for a test program is test
, and test
will invoke /bin/test
, the ./command
habit is still a good one.
And Basile has a good point that csh
is not the best shell for writing scripts -- but from the looks of the output, the script you're running is probably simple enough that it doesn't make much difference. Still, good habits and all that.
Upvotes: 2
Reputation: 1
Perhaps you need to add .
to your $PATH
.
And once you've got your exam, tell your professor about the famous C-shell considered harmful paper, and suggest him to read the Wikipedia "Considered Harmful" page.
Upvotes: 1