Я получаю “команду, не найденную” ошибка, хотя файл сценария показывает “ls”

[115944] Данные по [116313]tmpfs

(Временная файловая система)[116316] не будут сохраняться при перезагрузках.

Если вы заботитесь только о сохранении точки монтирования, это будет продиктовано вашим определением [116317]/etc/fstab[116318]. [115947]

1
21.08.2014, 13:04
3 ответа

Есть две проблемы:

Во-первых, у вас нет разрешения на выполнение:

Добавьте разрешение для вы с:

$ chmod u+x yiic

Это дает u , пользователю - вам - x , разрешение на выполнение.


Второй, отдельный вопрос, касается того, как вы вызываете программу и как она находится.
Теперь у вас есть разрешение на выполнение, но

$ yiic

, вероятно, по-прежнему выдаст вам ошибку команда не найдена .

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

Но вы можете указать имя файла команды для запуска, указав путь к каталогу для командного файла. Самый простой вариант - просто использовать текущий каталог:

$ ./yiic

Наконец-то это должно сработать!

Если он работает без ./ впереди, значит, у вас есть текущий каталог, . , в вашем $ PATH - взгляните на него:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


(О, а еще есть известная проблема использования имени файла test для тестирования чего-либо ... это довольно плохая ловушка, я бы сказал - вы не первый, кого она укусила ...)

2
27.01.2020, 23:17

Права доступа к файлу yiic не установлены, поэтому он может быть запущен.

-rw-r-----  1 srv50213 srv50213   75 Aug  4 21:05 yiic 

Вы можете установить это так:

$ chmod u+x yiic

Тогда это должно выглядеть так:

-rwxr-----  1 srv50213 srv50213   75 Aug  4 21:05 yiic 

Почему тест сработал?

Вы можете подумать, что вы выполняли тест , но на самом деле вы его выполнение одной из следующих команд, называемых test , которые расположены здесь:

$ type -a test
test is a shell builtin
test is /usr/bin/test
test is /bin/test

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

Чтобы убедиться, что вы выполняете команду, которая присутствует в текущем каталоге, всегда рекомендуется ставить перед ней косую черту через точку, например: ./ test . Это заставляет оболочку запускать test из текущего местоположения, а не искать в вашем $ PATH поиск одного для запуска.

1
27.01.2020, 23:17

Во всех последних выпусках Fedora /bin является символьной ссылкой на /usr/bin , что означает, что если вы посмотрите в/bin, вы действительно будете перенаправлены в/usr/bin. Однако оба отображаются в $ PATH (hmmm; это, вероятно, должно быть очищено), и это то, что вы видите с , который - питон - два способа добраться до фактически-идентичного бинарного.

Итак, здесь нет никаких проблем.

(Однако, обратите внимание, что установка со смешением pip и rpm (yum) может дать запутанные результаты и, возможно, установить дублированные версии вещей.)

-121--62567-

Можно использовать команду top для определенного диска или, если вы действительно хотите быть конкретным, использовать iostat -xd/proc .

-121--93160-

Необходимо удалить Win (CRLF) в первой строке;

Если вы откроете файл в mcedit, вы увидите:

!/usr/bin/env php ^ M

измените его на

!/usr/bin/env php

2
27.01.2020, 23:17

Теги

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