Você não deve adicionar o próprio script a $PATH . Em vez disso, você deve adicionar o diretório que contém o script a $PATH :
export PATH=$PATH:/opt/scripts
Eu escrevi um script de shell, mostro o script
myscript.sh
#!/bin/bash
ssh -t proxy@PROXY -p 22022 "ssh me@REMOATE_MACHINE -p 22022"
Eu coloquei o script em /opt/scripts/myscript.sh e chmod u+x myscript.sh . Depois disso, adicionei export PATH=$PATH:/opt/scripts/myscript.sh em .bashrc .
E, em seguida, source .bashrc , mas quando digito myscript.sh , o terminal retornou myscript.sh: command not found
e echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/opt/scripts/myscript.sh:/usr/lib/jvm/java-8-oracle/bin:/bin:/bin:/opt/hadoop-2.6.4/bin:/opt/hadoop-2.6.4/sbin:/opt/hive-2.0.0-bin/bin
/opt/scripts/myscript.sh está no PATH
Como devo resolver o problema?
Você não deve adicionar o próprio script a $PATH . Em vez disso, você deve adicionar o diretório que contém o script a $PATH :
export PATH=$PATH:/opt/scripts
Não deve ser /opt/scripts/myscript.sh . Deve ser /opt/scripts . Ele está tratando /opt/scripts/myscript.sh como um diretório e usando todos os arquivos nele, não em si. Isso pode ser conseguido pelos seguintes comandos;
PATH=$PATH:/opt/scripts
export PATH