Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> bash, узнать путь к файлу, узнать путь где находится сам файл 
V
    Опции темы
Dave
Дата 14.11.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Все привет !

как в  bash  скрипте узнать путь где он сам находится ? 

если сделать в нем pwd то он выведет путь откуда я запускал этот скрипт а не путь где находится сам файл а мне в самом скрипте нужно знать путь где он находится .
Хелп, плиз.



PM MAIL   Вверх
bilbobagginz
Дата 14.11.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



Цитата(Dave @  14.11.2008,  13:39 Найти цитируемый пост)
если сделать в нем pwd то он выведет путь откуда я запускал этот скрипт а не путь где находится сам файл

т.е. по твоей теории если ты в скрипте сделаешь
Код

cd /
pwd
cd /tmp
pwd

обе распечатки будут идентичны ?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Dave
Дата 14.11.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



идентичны не будут
ведь идет явно переход в другую директорию 

допустим я нахожусь тут: ~user
и выполняю скрипт 
Код

cd /
pwd
cd /tmp
pwd

фактически это равносильно тому если бы я выполнил эти команды в консоли по очереди,
результатом будет:
Код

/
/tmp



но это ничего не дает мне, в скрипте я все равно не знаю где нахожусь, вобщем надо рыть доки.

Это сообщение отредактировал(а) Dave - 14.11.2008, 16:13
PM MAIL   Вверх
bilbobagginz
Дата 14.11.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



Цитата(Dave @  14.11.2008,  13:39 Найти цитируемый пост)
как в  bash  скрипте узнать путь где он сам находится 

pwd
Цитата(Dave @  14.11.2008,  16:13 Найти цитируемый пост)
но это ничего не дает мне

в таком случае... надо 999 раз перечитать результат pwd







--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
nickless
Дата 14.11.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Если только под linux:
Код

#!/bin/sh

DIR="$(dirname $(readlink -f "$0"))"
echo "$DIR"


В *BSD/MacOS работать скорее всего не будет.

Добавлено через 2 минуты и 44 секунды
ЗЫ Это канонизированый абсолютный путь без симлинков. В $0 всегда передаётся путь к скрипту относительно pwd, так как его вызвал юзер.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Dave
Дата 18.11.2008, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Цитата(bilbobagginz @ 14.11.2008,  16:37)
Цитата(Dave @  14.11.2008,  13:39 Найти цитируемый пост)
как в  bash  скрипте узнать путь где он сам находится 

pwd
Цитата(Dave @  14.11.2008,  16:13 Найти цитируемый пост)
но это ничего не дает мне

в таком случае... надо 999 раз перечитать результат pwd

smile
конечно, если в скрипте я явно перехожу в /tmp то это мне он и выдаст. Суть в том что скриптик может лежать в разных директориях на сервере и в скрипте самом я не знаю что мне нужно сделать, cd /tmp или cd /another, в этом то и проблема.  А при запуске скрипта мне нужно чтобы он выполнил действие относительно того места (директории) где он находится а на момент написания скрипта я не знаю этого пути. Поэтому мне нужно чтобы скрипт сам определял где он находится.

Добавлено через 30 секунд
Цитата(nickless @ 14.11.2008,  18:20)
Если только под linux:
Код

#!/bin/sh

DIR="$(dirname $(readlink -f "$0"))"
echo "$DIR"


В *BSD/MacOS работать скорее всего не будет.

Добавлено @ 18:23
ЗЫ Это канонизированый абсолютный путь без симлинков. В $0 всегда передаётся путь к скрипту относительно pwd, так как его вызвал юзер.

Спасибо, 
это как раз то что нужно!
PM MAIL   Вверх
Vaulter
Дата 18.11.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



обычно 
`dirname $0`
достаточно  smile 


--------------------
PM MAIL WWW ICQ   Вверх
Dave
Дата 21.11.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Цитата(Vaulter @ 18.11.2008,  23:32)
обычно 
`dirname $0`
достаточно  smile

Спасибо !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1177 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.