shell script giving error message "No such file or directory" on cygwin 3.0.7-1

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Fri Sep 27 11:18:00 GMT 2019


On 2019-09-26 20:43, DynV Montrealer wrote:
> I've tried updating Cygwin a few days ago, hopefully I did it right and it
> seems its version cygwin 3.0.7-1, with its kernel version 3.0.7(0.338/5/3).
> If you did not realize it, I'm unfamiliar with Cygwin, as well as with
> GNU/Linux.
> I managed to do a command that give the result I wanted (I've tested it
> successfully) ; its censored version is "sed -e 'WORKING_REGEX' -i
> /cygdrive/REGEX_FILE_FULL_PATH". I then copy-pasted it (from Cygwin64
> Terminal) into a file I saved with the extension .sh hoping to have that
> work as a shell script. I then input in the terminal the uncensored
> "./cygdrive/SHELL_SCRIPT_FULL_PATH" and got the uncensored version of
> "-bash: ./cygdrive/SHELL_SCRIPT_FULL_PATH: No such file or directory". Oh!
> And it likely is the right path as when I do the command "ls
> /cygdrive/SHELL_SCRIPT_FULL_PATH" it gives the output
> "/cygdrive/SHELL_SCRIPT_FULL_PATH".

More likely your PATH or whatever script or file is being used is not set up
such that it is doing what you think.

> Is there a way to make a Cygwin shell script with the command? Or do I have
> to make a text file giving instructions (copy-paste, etc.) ?
Shell scripts must be in Unix text format (only \n newlines - no \r CRs) and
executable.
Please run "file script" and "ls -glo script" and post the output, including the
actual file names, please; for example, to show some differences:

	$ file genfl.sh ja.cmd
	genfl.sh: Bourne-Again shell script, ASCII text executable
	ja.cmd:   ASCII text, with CRLF line terminators
	$ ls -glo genfl.sh ja.cmd
	-rwxr-xr-x+ 1 236 Nov 28  2017 genfl.sh
	-rwxr-xr-x+ 1 722 Nov 27  2017 ja.cmd

You can convert a DOS text file to Unix text by running d2u/dos2unix on it:
	$ d2u script
and you can make it executable using change mode (permissions):
	$ chmod +x script

Executable scripts may be run by the invoking shell, or by the default shell
/bin/sh, depending on the invoking shell.

To specify a script interpreter, make the first line of each script a shebang
line, starting #!, optionally followed by blanks, followed by an interpreter
path or program name e.g. "#!/bin/sh", "#! /bin/bash", "#! /bin/dash", etc.

Strictly speaking the command should not exceed 14 characters, although that is
not enforced by shells nowadays, but some old commercial system shells may.

You must either specify a relative or absolute path to an executable:
	$ ./script
or have it in a directory in your PATH where it can be found by searching.

If you create a bin subdirectory under your home directory to hold scripts:
	$ mkdir ~/bin/
some shell profiles will add it to your PATH, or you can do so explicitly:
	$ export PATH="$HOME/bin:$PATH"

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list