2016-06-17 5 views
1

У меня есть .sh-файл в папке bin, но когда я пытаюсь его использовать, сервер не может найти его в папке.Почему команда не найдена в определенной папке?

/home/monju/full/app/bin $ls 
checkServer.sh etf_disagg_config_loader.sh getLogName.sh mapr 
common.sh  findLog.sh     jgrouplog.sh phase2b 
commonStart.sh findServer.sh    jmx   postInstallSetup.sh 
errorLog.ksh followLog.sh     jrebel.sh  probe.sh 
etf    genTestFile.ksh    killServer.sh RMSDisable.sh 
/home/monju/full/app/bin $stopServer.sh 
bash: stopServer.sh: command not found 

в то время, когда я использую /home/monju/full/app/bin/stopServer.sh, он может быть использован.

ответ

8

Просто потому, что он находится в каталоге с именем bin, это не значит, что оболочка может волшебным образом найти его.

Вам необходимо поместить полный путь в переменную окружения $PATH или символически связать его с тем, что уже находится в $PATH.

Конечно, если вы только хотите, чтобы запустить его из текущего каталога, то лучше использовать

$ ./stopServer.sh 

который так же как длинный абсолютный путь, который вы дали, только используя относительный синтаксис пути, где . означает текущий каталог.

Взятие . себя в $PATH считается плохой практикой, я думаю.

+1

Вы правильно относитесь. :) – Barmar

+0

Это * дополнительная * плохая практика, чтобы иметь ее перед '$ PATH', поскольку все, что находится в текущем каталоге, будет поднято до использования стандартных путей поиска. – Kusalananda

3

Использование

./stopServer.sh 

и убедитесь, что у вас есть права выполнения.

Смежные вопросы