История изменений
Исправление Valdor, (текущая версия) :
Переработал. На свежий мозг мне твой вариант показался более правильным:
#!/bin/bash
if [ `compgen -c | grep -x "$1"` ]
then
echo "Файл находится в PATH"
$* &
disown
elif [ -e "$1" ]
then
echo "Файл существует по указанному пути"
if [ -x "$1" ]
then
if [[ "$(dirname $1)" = "." ]]
then
echo "Файл находится в текущем каталоге"
./$* &
disown
else
$* &
disown
fi
else
xdg-open "$1" &
disown
fi
else
echo "Такого файла нет ни по указанному пути, ни в PATH"
fi
Фишка такова. Допустим, какой-то объект есть и в PATH, и в текущем каталоге. Допустим, у меня в текущем каталоге лежит файл dd, имеющий права на исполнение. Если вызову
./script.sh dd
выполнится dd из PATH
Если же
./script.sh ./dd
выполнится местный dd.
Исправление Valdor, :
Переработал. На свежий мозг мне твой вариант показался более правильным:
#!/bin/bash
if [ `compgen -c | grep -x "$1"` ]
then
echo "Файл находится в PATH"
$* &
disown
elif [ -e "$1" ]
then
echo "Файл существует по указанному пути"
if [ -x "$1" ]
then
if [[ "$(dirname $1)" = "." ]]
then
echo "Файл находится в текущем каталоге"
./$* &
disown
else
$* &
disown
fi
else
xdg-open "$1" &
disown
fi
else
echo "Такого файла нет ни по указанному пути, ни в PATH"
fi
Фишка такова. Допустим, какой-то объект есть и в PATH, и в текущем каталоге. Допустим, у меня в текущем каталоге лежит файл dd, имеющий права на исполнение. Если вызову
./script.sh dd
выполнится dd из PATH
Если же
./script.sh ./dd
выполнится местный dd.
Исходная версия Valdor, :
Переработал. На свежий мозг мне твой вариант показался более правильным:
#!/bin/bash
if [ -e "$1" ]
then
echo "Файл существует"
if [ -x "$1" ]
then
echo "Файл исполняемый"
if `compgen -c | grep -x "$1"`
then
echo "Файл находится в $PATH"
$* &
disown
else
if [[ "$(dirname $1)" = "." ]]
then
echo "Файл в текущем каталоге"
./$* &
disown
else
$* &
disown
fi
fi
else
xdg-open "$1" &
disown
fi
else
$* &
disown
fi