Почему я могу запускать только файл .sh из родительского каталога, а не дочернего каталога

Я Linux noob. Я заметил, что это не работает:

/tomcatDirectory/bin $ startup.sh //command not found 

но это действительно работает

 /tomcatDirectory $ bin/startup.sh 

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

Какая большая картина того, что здесь происходит?

  • Создание дубликата пути в Unix
  • В чем разница между home $ и ~ $?
  • Где программа установлена ​​после ./configure
  • права доступа к каталогу
  • Где разместить исходный код для приложений, скомпилированных из исходного кода?
  • Могу ли я предотвратить создание папки с определенным именем?
  • Как называется каталог верхнего уровня
  • Перенаправить домой общий раздел NTFS
  • 2 Solutions collect form web for “Почему я могу запускать только файл .sh из родительского каталога, а не дочернего каталога”

    Текущий каталог (т . Е . ) Не находится на вашем пути. Попробуйте

     ./startup.sh 

    Вы можете проверить свой путь с помощью

     echo ${PATH} 

    Вы можете добавить текущий каталог ( . ) К своему пути, но это считается риском (особенно если это происходит перед другими каталогами): при вводе команды оболочка сначала попытается выполнить ее в текущем каталоге. Это выполнит то, что есть, а не по умолчанию .

    Подведение итогов: просто запустите исполняемые файлы в текущем каталоге с ./ перед ними.

    Поскольку «startup.sh» на самом деле не похож на путь к файлу, а у вас его нет . в переменной среды PATH. Но все же вы можете запустить его как ./startup.sh

    Linux и Unix - лучшая ОС в мире.