Я имею, записал сценарий оболочки, покажите сценарий
myscript.sh
#!/bin/bash
ssh -t proxy@PROXY -p 22022 "ssh me@REMOATE_MACHINE -p 22022"
И я поместил сценарий в /opt/scripts/myscript.sh
, и chmod u+x myscript.sh
. После этого я добавил export PATH=$PATH:/opt/scripts/myscript.sh
в .bashrc
.
И затем source .bashrc
, но когда я ввожу myscript.sh
, терминал возвращается myscript.sh: command not found
И 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
находится в PATH
Как я должен решить проблему?
Вы не должны добавлять сам сценарий к $PATH
. Вместо этого необходимо добавить каталог, содержащий сценарий к $PATH
:
export PATH=$PATH:/opt/scripts
Это не должно быть /opt/scripts/myscript.sh
. Это должно быть /opt/scripts
. Это рассматривает /opt/scripts/myscript.sh
как каталог и использует все файлы в нем, не самом. Это может быть достигнуто следующими командами;
PATH=$PATH:/opt/scripts
export PATH