The first error message is : command not found rather than the usual format bash: SOMECOMMAND: command not found. This indicates that something fishy is going on.
What is going on is that your script contains carriage return characters at the end of some lines. Under Windows, a newline is represented by the two-character sequence CR,LF (carriage return followed by line feed). Under all Unix flavors, a newline is represented by the character LF only. Bash sees a line like SOMECOMMAND␍ were ␍ is a CR character, which it parses as a call to the command called SOMECOMMAND␍. Since there is no such command, bash displays its usual error message.
In the terminal, the control character CR moves the cursor back to the beginning of the line. So the rest of the message overwrites the command name.
The fix is not to use a Windows editor to edit shell scripts, or to configure your editor not to put CR characters in shell scripts.
To convert an existing file in place under Linux or Cygwin from Windows line endings to Unix line endings, you can use the following command. It works even if the original file has mixed Windows and Unix line endings.
sed -i -e 's/\r$//' parte.sh
source script_name? You probably need to add#!/bin/bashif your script is executablesplit -l 50000 pa.txt pais much easier. If you want to keep the pa01.txt format, run this next:let c=1; for i in pa??; do mv $i $(printf "pa%02d.txt" $c); let c++; done