Есть две проблемы:
Во-первых, у вас нет разрешения на выполнение:
Добавьте разрешение для вы с:
$ 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
для тестирования чего-либо ... это довольно плохая ловушка, я бы сказал - вы не первый, кого она укусила ...)
Позволяет создать простой скрипт:
#!/bin/bash
mypath=$1
while [[ "${#mypath}" -gt 1 ]]; do
file "$mypath"
mypath="$(dirname $mypath)"
done
Test:
$ ./linksinfo /usr/src/linux/kernel/../../../../bin/sh
/usr/src/linux/kernel/../../../../bin/sh: symbolic link to `bash'
/usr/src/linux/kernel/../../../../bin: directory
/usr/src/linux/kernel/../../../..: directory
/usr/src/linux/kernel/../../..: directory
/usr/src/linux/kernel/../..: directory
/usr/src/linux/kernel/..: directory
/usr/src/linux/kernel: directory
/usr/src/linux: symbolic link to `linux-3.14.14-gentoo'
/usr/src: directory
/usr: directory
Edit
Это не проверяет/показывает все компоненты пути, но вывод в вопросе также не делает этого. Например, после
/home/nix/.nix-profile -> /nix/var/nix/profiles/default
возможно, что любой из /nix
, /nix/var/
, /nix/var/nix
, /nix/var/nix/profiles
или /nix/var/nix/profiles/default
сам по себе является ссылкой. Однако ваш вывод пропускает это и проверяет только /nix/var/nix/profiles/default/lib
. Аналогичное происходит и с
/nix/var/nix/profiles/default/lib/libQt5OpenGL.so -> /nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1/lib/libQt5OpenGL.so
/nix/store/nix/store
и /nix/store/33xkmx1f1040s5nb15x7hx2cqmyw1jyi-qt-5.3.1
. Короче говоря, я предлагаю переосмыслить проблему и подумать о том, чего вы на самом деле хотите достичь. Может быть достаточно простого прочитать ссылку [-f]
или realpath [-e]
?