Непонятки с bash

Автор Fieryx, 11 ноября 2012, 00:06:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Fieryx

Доброго времени суток! Только начал осваивать bash и возникла такая ситуация.
Есть скрипт вида

#!/bin/bash
ls /bin/a*
ls /home
с именем pewpew.

chmod u+x писал.
Если я нахожусь в каталоге со скриптом и ввожу pewpew, то получаю сообщение, что такой команды нет.
Если пишу путь до файла ~/trash/pewpew, то скрипт работает.
Если я нахожусь в каталоге со скриптом и ввожу bash pewpew, то все тоже работает, но тут вроде бы все ясно. Предыдущие 2 строчки меня смущают, ведь разницы между ними я не вижу.

Разъясните, пожалуйста, чем ~/trash/pewpew отличается от pewpew, если я уже нахожусь в каталоге trash.

corner

Грубо говоря, автоматически находятся и исполняются (если установлен флаг x) файлы, находящиеся в каталогах, определенных переменной среды $PATH. В остальных случаях нужно указывать путь, даже если пользователь находится в каталоге.
Поэтому не исполнится foo, но будет выполнен ./foo

Fieryx


xbsd

ЦитироватьПочему бы не запустить сценарий просто набрав название файла scriptname, если сценарий находится в текущем каталоге? Дело в том, что из соображений безопасности, путь к текущему каталогу "." не включен в переменную окружения $PATH. Поэтому необходимо явно указывать путь к текущему каталогу, в котором находится сценарий, т.е. ./scriptname.
отседа