Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Переход по каталогам в скриптах sh [Решено]  (Прочитано 4198 раз)

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

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Доброе утро. Ситуация такая, в ручном режиме я спокойно перехожу в нужный каталог, командой cd, и запускаю екзешник. В скрипте команда cd отказывается работать, с ошибкой cant open srv/test/test. Сам скрипт лежит в home/andrey. Файл, который нужно запустить в srv/test/test.
Содержание скрипта:

#!bin/sh
cd /srv/test/test
screen -S test -dm ./test


Зхожу в домашний каталог на себя, затем запускаю его: sudo sh test.sh. Предварительно права все выдал скрипту, командой sudo chmod 777 test.sh.

Но блин вчера часа 2 парился с этой хернёй, а самое интересное - Гугл в поиске похожей ошибки не дал ничего. Может тут есть ребята, которые шарят?
« Последнее редактирование: 03 Мая 2020, 05:57:56 от zg_nico »

Оффлайн acetone

  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
    • Fediverse
Re: Переход по каталогам в скриптах sh
« Ответ #1 : 04 Марта 2020, 11:23:58 »
Пробовал?
#!/bin/bash
« Последнее редактирование: 06 Марта 2020, 08:07:53 от .acetone »
Пошутил про демона - нажал иконку.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #2 : 04 Марта 2020, 11:33:27 »
1. В шабанге пропущен слеш. #!/bin/sh
2. Попробуй #!/bin/bash
3. cd выполнять не обязательно, можно сразу написать путь до исполняемого файла.
screen -S test -dm  /srv/test/test/test4. Покажи вывод ls -l /srv/test/test/test
5. Зачем запускать от рута?

Пользователь добавил сообщение 04 Марта 2020, 12:13:12:
Цитировать
sudo sh test.sh
При таком запуске шабанг не имеет никакого значения.
« Последнее редактирование: 04 Марта 2020, 12:13:12 от ReNzRv »

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #3 : 04 Марта 2020, 13:49:25 »
По поводу слеша  это я сейчас допустил ошибку, так как пишу с телефона. Дома на компьютере все как положено написано, по примеру других делал. От рута я уже в конце начал запускать, что бы наверняка. Баш тоже пробовал, только с ним ошибка кажется менялась на подобное : "no serch files directorty". Без cd напрямую сегодня обязательно попробую, сейчас на работе.

п.с ссылался на эту статью: https://compizomania.blogspot.com/2017/01/script-linux.html?m=1
« Последнее редактирование: 04 Марта 2020, 14:09:42 от Uint32 »

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #4 : 04 Марта 2020, 14:39:41 »
cd /srv/test/test screen -S test -dm ./test
а в каталоге /srv/test/test есть каталог test?

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #5 : 04 Марта 2020, 15:43:34 »
кажется менялась на подобное : "no serch files directorty"
Не search а such наверное. В переводе - "нет такого файла или каталога". Далее по нарастающей:
По поводу слеша  это я сейчас допустил ошибку, так как пишу с телефона. Дома на компьютере все как положено написано, по примеру других делал.
Uint32, так Вы и показывайте стоковый скрипт, как он у Вас сейчас выглядит. А то выходит у Вас сейчас примерно так:
Цитировать
я запускаю что-то, получаю в ответ что-то, и ничё при этом не работает... Внимание вопросы: почему, и что делать?!
Сам скрипт лежит в home/andrey. Файл, который нужно запустить в srv/test/test
Тоже сильно сомнительно. Пути все начинаются со слеша. Путей home/andrey и srv/test/test в Вашей системе существовать по определению не может.
Словом, мой ультиматум, как модератора раздела, в котором находится тема:
1. to_all! Флуд прекращаем. Всех касается, не только ТС. Флудом будут являться все сообщения, оставленные в теме до тех пор, пока ТС не покажет свой скрипт и ошибку, которая у него возникает. Гадания на кофейной гуще - и есть флуд (да-да!).
2. Uint32, Вам персонально: демонстрируйте начинку своего скрипта (не перепечатывая, а скопировав, и выведя текстом в сообщение на форум), демонстрируйте четко ошибки, на которые идет ругань оболочки (чтобы больше не было метаморфоз вида such/search).
А теперь к ультиматуму: при невыполнении этих требований мы начнем убивать заложников по одному я заблокирую тему, и наложу штрафы на нарушителей.
« Последнее редактирование: 04 Марта 2020, 15:46:21 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #6 : 04 Марта 2020, 16:40:35 »
cd /srv/test/test screen -S test -dm ./test
а в каталоге /srv/test/test есть каталог test?

Что бы лучше понимать, поменяем тест на программы( пусть будет 10 програм, и каждую нужно запустить). srv/programs/one
В папке one - первая программа, и тут же сам экзешник этой программы, пускай будет run. В папке two - 2 программа и ТД до 10.

Тогда вид будет такой:
/srv/programs/one
screen -S prog1 -dm ./run

/srv/programs/two
screen -S prog2 -dm ./run
Так должно быть понятнее.

п.с Нико, я тебя услышал, домой приду скину ошибку как есть.
« Последнее редактирование: 04 Марта 2020, 16:44:54 от Uint32 »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #7 : 04 Марта 2020, 16:52:17 »
домой приду скину ошибку как есть
Ждем. И код скрипта ждем.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 883
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #8 : 04 Марта 2020, 16:52:57 »
Uint32, права поменяй

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #9 : 04 Марта 2020, 17:58:29 »
запускаю его: sudo sh test.sh
командой sudo chmod 777 test.sh
А теперь внимание!!!
screen -S test -dm ./test
Поэтому и просят
демонстрируйте начинку своего скрипта (не перепечатывая, а скопировав, и выведя текстом в сообщение на форум), демонстрируйте четко ошибки, на которые идет ругань оболочки (чтобы больше не было метаморфоз вида such/search)
Как отлавливать ошибки в коде, если Вы в правописании(или переносе) ошибаетесь на каждом шагу?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #10 : 05 Марта 2020, 17:36:03 »
Azure, Ошибся я только в шабанге,а не на каждом шагу, поскольку писал с телефона. Напомню, сам скрипт находится в: /home/andrey script.sh  (переименовал с test.sh на script.sh)

код:
#!/bin/sh
cd /srv/programs/one
screen -S prog1 -dm ./run

ошибка:
script.sh: 2: cd: can't cd to /srv/programs/one
код без cd:
#!/bin/sh
/srv/programs/one
screen -S prog1 -dm ./run

ошибка: : not found script.sh: /srv/programs/one
код:
#!/bin/bash
/srv/programs/one
screen -S prog1 -dm ./run

ошибка: : No such file or directory one

p/s RenZrv, Команда  ls -l /srv/programs/one выводит список всех файлов, присутствующих в папке one. Запускаемый фаил run, подсвечен зеленым цветом и права разумеется стоят на него полные.
« Последнее редактирование: 05 Марта 2020, 17:56:43 от Uint32 »

Оффлайн acetone

  • Участник
  • *
  • Сообщений: 168
    • Просмотр профиля
    • Fediverse
Re: Переход по каталогам в скриптах sh
« Ответ #11 : 05 Марта 2020, 17:52:09 »
По запросу "sh dont work cd command" поисковик выдал интересности:
Раз и два. Судя по этой информации, проблема решится алиасом, либо размещением рабочего скрипта в конечной директории, а уже оттуда можно вытянуть "ярлычок" к себе, в удобное место.
Отпишись в случае успеха ;)
Пошутил про демона - нажал иконку.

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #12 : 05 Марта 2020, 18:05:38 »
По запросу "sh dont work cd command" поисковик выдал интересности:
Раз и два. Судя по этой информации, проблема решится алиасом, либо размещением рабочего скрипта в конечной директории, а уже оттуда можно вытянуть "ярлычок" к себе, в удобное место.
Отпишись в случае успеха ;)

В конечной директории? Вы предлагаете script.sh закинуть в каталоги с программой, ну т.е в папки one, two, three ? И если в будущем будет 100+ программ, в каждой из них потребуется наличие скрипта ?
« Последнее редактирование: 05 Марта 2020, 18:07:26 от Uint32 »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #13 : 05 Марта 2020, 18:07:53 »
Ошибся я только в шабанге
Хорошо. Смотрим:
screen -S test -dm ./test
sudo chmod 777 test.sh[/color]
#!/bin/sh
/srv/programs/one
screen -S prog1 -dm ./run

ошибка: : not found script.sh: /srv/programs/one
Где в программе (которая выше?) script.sh?

Команда  ls -l /srv/programs/one выводит список всех файлов
Не нужны ваши словесные описания, тут не урок литературы. Хотите найти ошибку - выполните команду и скопируйте/вставьте результат
« Последнее редактирование: 05 Марта 2020, 18:10:11 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Uint32

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: Переход по каталогам в скриптах sh
« Ответ #14 : 05 Марта 2020, 18:39:07 »
#!/bin/sh
/srv/programs/one
screen -S prog1 -dm ./run

ошибка: : not found script.sh: /srv/programs/one
Где в программе (которая выше?) script.sh?

Так в папке с программой нет скрипта, скрипт находится в домашнем каталоге: /home/andrey script.sh
Программа находится в каталоге: /srv/programs/one run

Для этого я и пытаюсь направить командой "cd" скрипт в нужный каталог.

 

Страница сгенерирована за 0.038 секунд. Запросов: 25.