Pourquoi ne puis-je exécuter qu'un file .sh à partir du directory parent et non du directory enfant

Je suis un noob Linux. J'ai remarqué que cela ne fonctionne pas:

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

mais cela fonctionne

 /tomcatDirectory $ bin/startup.sh 

Je suis habitué à Windows. Il me semble contre-intuitif que je ne peux pas exécuter un programme à partir de son directory de travail, uniquement à partir du dossier parent.

Quelle est la plus grande image de ce qui se passe ici?

Le directory actuel (ie,.) N'est pas dans votre path. Essayez avec

 ./startup.sh 

Vous pouvez vérifier votre path avec

 echo ${PATH} 

Vous pouvez append le directory courant ( . ) À votre path, mais cela est considéré comme un risque (surtout si .est avant les autres directorys): lors de la saisie d'une command, le shell essayera d'abord de l'exécuter dans le directory courant. Cela exécutera ce qui est là au lieu de celui par défaut .

Résumer: il suffit de lancer les exécutables dans le directory courant avec ./ en face d'eux.

Parce que "startup.sh" ne ressemble pas vraiment à un path vers un file et que vous n'en avez pas . dans votre variable d'environnement PATH. Mais vous pouvez toujours le démarrer en tant que ./startup.sh