The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как спросить у шела - кто ты?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 20-Дек-08, 20:33 
В сети много видел вопросов из серии как узнать какой shell сейчас запущен, но так и не нашол ответа, обычно пургу отвечают. :) Универсального ответа так и не нашол...

Вопрос: как в шелле узнать какой шелл???

Ответ1
echo $SHELL не катит т.к. он показывает переменную окружения, а не шелл в котором я счас. Например после логина запуская у меня на сервере разные шелы и сомтря занчение переменной - видим одно и тоже... шелл который по умолчанию для меня.

Ответ2
echo $0 тоже не катит, так как он показывает не шел в котором я а "оболочку" притом без пути. Попробуйте залогиниться под юзером набрать это, а потом набрать этоже после команды su :) оно и выдаст -su а не текущий шелл.

Так что, кто-то знает как заставить шелл признаться - какой у него исполняемый файл(полный путь и имя файла) и неплохо бы ешо его и версию

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как спросить у шела - кто ты?"  
Сообщение от Oyyo on 20-Дек-08, 21:48 
>[оверквотинг удален]
>
>Ответ2
>echo $0 тоже не катит, так как он показывает не шел в
>котором я а "оболочку" притом без пути. Попробуйте залогиниться под юзером
>набрать это, а потом набрать этоже после команды su :) оно
>и выдаст -su а не текущий шелл.
>
>Так что, кто-то знает как заставить шелл признаться - какой у него
>исполняемый файл(полный путь и имя файла) и неплохо бы ешо его
>и версию

сморти /etc/passwd на юзера, а для версии сотри ман на предмет флага -v or --version


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 21-Дек-08, 01:59 
>
>сморти /etc/passwd на юзера, а для версии сотри ман на предмет флага

и чем это отличаеться от просмотра переменной ШЕЛЛ??? (с идейной точки зрения, понятно шо в переменную можно чипуху записать, но мы это не расматриваем)
я про то что, кто сказал что пользователь потом не перезапускал шелл, уже юзая какойто другой,я ж писал шо вариант сразу накрываеться попой, если запустить из своего шела другой шелл

>-v or --version

нету, да и вопрос есть ли в шеле команда, шоб узнать... типа как uname -v только про шелл

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как спросить у шела - кто ты?"  
Сообщение от s_dog (??) on 20-Дек-08, 22:15 
PID шела - echo $$
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 21-Дек-08, 02:01 
>PID шела - echo $$

РЕСПЕКТ!!! вот то шо надо вкратце и  по существу....
то шо надо, всмысле по теме, но немного не то...

вот я сделал
логинюсь
запускаю sh
потом bash
потом su
ввожу echo $$
и что ты думаешь оно сообщило ? _su(csh) это его ответ... это
получаеться если скрипту нужно узнать какой шелл, то бегать по выводу команды ps -Al
и думать , шоб найти какойже шелл работает.

ЗЫ:
в базовые скрипты отправляющая станция вставляет вставки, которым во время работы нужно узнать какой шелл нынче, а в каком шелле будет выходной скрипт выполняться определиться лишь на принимающей станции... типа авто-админа пытаемся сделать.... который будет слать скрипты станциям шоб те их выполнили, притом исходя из того шо легче сделать нужные действия далеко не в стандартном шеле, а есть там нестандартный или нету, и какой есть, опеределиться только на конечной станции

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как спросить у шела - кто ты?"  
Сообщение от Anatoliy (??) on 21-Дек-08, 03:05 
#!/usr/local/bin/bash

q=`basename $0`
w=`head -n 1 ${q} | sed 's/.*\///'`  

echo "${w}"


Вас это интересовало?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 21-Дек-08, 11:54 
>#!/usr/local/bin/bash
>
>q=`basename $0`
>w=`head -n 1 ${q} | sed 's/.*\///'`
>
>echo "${w}"
>
>
>Вас это интересовало?

так это же тоже самое что и echo $0 - если это выполнить после команды su ... оно вместо шелла выдаёт саму su. вот после sudo всёравно выдаёт шелл притом с полным путём - и тогда ваш скрипт полность оправдывает надежды. а вот после su нет
да и после логина набор этих команд не даст эфекта... так как в переменной 0 записано не "sh" a "-sh" basename вообще тогда материться.
мне бы именно универсальный метод, пусть и через попу, если у шела нет встроеных команд-позывных :) но который сработает в любом случае....


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Как спросить у шела - кто ты?"  
Сообщение от Sarge (??) on 21-Дек-08, 12:52 
>ввожу echo $$
>и что ты думаешь оно сообщило ? _su(csh) это его ответ... это
>
>получаеться если скрипту нужно узнать какой шелл, то бегать по выводу команды
>ps -Al
>и думать , шоб найти какойже шелл работает.

а у меня echo $$ всегда выдаёт PID текущего шелла (пробовал bash, sh, dash) - даже после su... Это у вас csh или su видимо глючит.

Вообще, у скриптов в первой строке написано чем их запускать, так что узнавать это ещё и внутри скрипта обычно не нужно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 21-Дек-08, 14:48 
>[оверквотинг удален]
>>получаеться если скрипту нужно узнать какой шелл, то бегать по выводу команды
>>ps -Al
>>и думать , шоб найти какойже шелл работает.
>
>а у меня echo $$ всегда выдаёт PID текущего шелла (пробовал bash,
>sh, dash) - даже после su... Это у вас csh или
>su видимо глючит.
>
>Вообще, у скриптов в первой строке написано чем их запускать, так что
>узнавать это ещё и внутри скрипта обычно не нужно.

Это обычно,а у нас будет запускаться код, и какой интерпритатор есть возможность узнать только после запуска. и хотелось бы иметь возможность не выполнять, то что в данном интерпритаторе не будет работать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Как спросить у шела - кто ты?"  
Сообщение от Hetzer (ok) on 21-Дек-08, 19:59 
>[оверквотинг удален]
>
>Ответ2
>echo $0 тоже не катит, так как он показывает не шел в
>котором я а "оболочку" притом без пути. Попробуйте залогиниться под юзером
>набрать это, а потом набрать этоже после команды su :) оно
>и выдаст -su а не текущий шелл.
>
>Так что, кто-то знает как заставить шелл признаться - какой у него
>исполняемый файл(полный путь и имя файла) и неплохо бы ешо его
>и версию

head -n 1 /proc/`echo $$`/status

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 21-Дек-08, 21:49 

>head -n 1 /proc/`echo $$`/status

до первого слеша я так понимаю = вывести шабку файла в количестве одна строка а потом имя файла должно ити или текст.... вот то что там ему не нравиться... пишет
/proc/<PID>/status нет такого файла

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Как спросить у шела - кто ты?"  
Сообщение от Hetzer (ok) on 21-Дек-08, 22:27 

озвучьте ТЗ полностью
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Как спросить у шела - кто ты?"  
Сообщение от Hetzer (ok) on 21-Дек-08, 22:33 
>>
>>>head -n 1 /proc/`echo $$`/status

это для линуксов

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Как спросить у шела - кто ты?"  
Сообщение от universite email(ok) on 22-Дек-08, 02:27 
>В сети много видел вопросов из серии как узнать какой shell сейчас
>запущен, но так и не нашол ответа, обычно пургу отвечают. :)
>Универсального ответа так и не нашол...
>
>Вопрос: как в шелле узнать какой шелл???

ps auxw | grep `echo $$` | grep -v grep |awk '{print $11;}'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Как спросить у шела - кто ты?"  
Сообщение от Andrey Mitrofanov on 22-Дек-08, 09:36 
>ps auxw | grep `echo $$` | grep -v grep |awk '{print
>$11;}'

ps |awk '$1=="'$$'"{print $4;exit}'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Как спросить у шела - кто ты?"  
Сообщение от Kurk_SS (ok) on 22-Дек-08, 10:34 
спасибо за ответы, но я так понял что мы пошли по пути получения чистого имени шела из вывода ps зная ПИД шела по переменной $$. Всё это понятно, яб и сам сделал, еслиб небыло ситуаций когда $$ хранит не пид шела а например команды su У меня кстате FreeBSD

я так понимаю в интерпритаторах нет встроенной команды для вывода информации про сам интерпритатор. :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "в общем-то оно никому не нужно"  
Сообщение от Andrey Mitrofanov on 22-Дек-08, 11:20 
>я так понимаю в интерпритаторах нет встроенной команды для вывода информации про
>сам интерпритатор. :(

"Переносимого" (для любого ос-а и любого sh), видимо, нет. "Их" просто много, и "минимальное" подмножество (оно же - переносимый шелл, юних шелл, посикс шелл) очень куцее.

Соответственно, либо пишешь "переносимо" и отплясываешь вокруг всех ограничений всех возможных шеллов, либо, если есть возможность, выбираешь 1 из возможных шелов и пишешь на нём, "несовместимо".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Как спросить у шела - кто ты?"  
Сообщение от angra (ok) on 22-Дек-08, 21:44 
Не совсем так. Ее нет у sh, который условно можно считать всегда имеющимся в наличии минимумом. В других шеллах такие средства есть, но различаются и на этом отличии и можно сыграть, например для баша будет непустой $BASH, для tcsh скорее всего $SHLVL итд. Поищите уникальные особенности в манах по нужным вам шеллам.
А можно узнать для чего вообще такой изврат нужен? Ведь даже если вы пытаетесь выполнить команды через ssh на машине с неизвестным шеллом, то можно либо ограничится sh, либо передать файл с нужным скриптом через scp. Для последнегоо скорее важно наличие(/etc/shells) нужных шеллов(а еще лучше перла), а не выяснение текущего шелла.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру