As variáveis do shell são definidas usando a sintaxe name=value
. Não deve haver nenhum caractere de espaço em branco [sem aspas] na declaração.
path1="./src/$1"
path2="./Main/$1"
# ^ remove space here
O espaço em seu uso estava invocando o outro uso de name=value
, ou seja, definindo temporariamente variáveis de ambiente para uma única chamada de programa.
Por exemplo:
# set environment variable "foo" to "bar" for this invocation of "program"
foo="bar" /path/to/program
# set "baz" to an empty value for the invocation of "program"
baz= /path/to/program
O motivo pelo qual você estava obtendo um erro de permissão negada em path1= "./src/$1"
foi porque foi considerado como "Definir variável de ambiente path1 como vazia e invocar o programa ./src/$1" e como ./src/$1
não tem seu executável bit set ele falhou.