Почему команда не работает, когда запускается в ее каталоге?

При установке OpenNMS возникла небольшая загвоздка. Проблема решена, но это оставило меня в недоумении ...

Почему это не работает:

[nac@localhost /]$ cd opt/opennms/bin/
[nac@localhost bin]$ runjava -s
-bash: runjava: command not found

... но это работает:

[nac@localhost /]$ opt/opennms/bin/runjava -s
runjava: Looking for an appropriate JRE...
runjava: Checking for an appropriate JRE in JAVA_HOME...
runjava: skipping... JAVA_HOME not set
runjava: Checking JRE in user's path: "/usr/bin/java"...
runjava: found an appropriate JRE in user's path: "/usr/bin/java"

Я использую cygwin. ssh в коробку Fedora. вывод будет зеленым для ls / opt / opennms / bin , если это поможет ...

-1
22.09.2017, 19:02
2 ответа

Потому что .не является частью вашего $PATH. Unix будет искать исполняемые программы только в тех каталогах, которые перечислены в $PATH.

Кроме того, наличие .в $PATHпредставляет угрозу безопасности, поэтому не делайте этого.

1
28.01.2020, 05:07

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

Он также не содержит /opt/opennms/bin. Если бы это было так, то при вводеrunjava(в любой директории )исполняемый файл находился бы там.

Несколько решений:

  1. Всегда используйте путь к исполняемому файлу: /opt/opennms/bin/runjavaили ./runjava, если вы находитесь в каталоге /opt/opennms/bin.
  2. Добавьте /opt/opennms/binк вашему пути. Для этого отредактируйте файл инициализации оболочки(.bash_profileили .bashrcдляbash)и добавьте строку

    PATH="$PATH:/opt/opennms/bin"
    

    Затем перезапустите сеанс Cygwin.

  3. Создать псевдоним:

    alias runjava=/opt/opennms/runjava
    

    Это будет добавлено в файл запуска оболочки. Это запустит исполняемый файл runjava, как если бы вы ввели полный путь к нему при вводе команды runjava.

Вы не хотите добавлять .к переменной PATH. Обсуждение этого вопроса см. в вопросе " Безопасно ли добавлять. к моему ПУТИ? Почему? "

2
28.01.2020, 05:07

Теги

Похожие вопросы