2014-09-30 5 views
1

В моей программе мне нужно вывести пользователю, какую оболочку он использует. Поэтому в файле /etc/udate-motd.d/00-header я написал printf "$SHELL", но проблема в том, что даже когда я переключая свою оболочку на zsh, $ SHELL по-прежнему равен/bin/bash. Я искал через интернет и обнаружил, что могу использовать его, используя MyShell='ps -hp $$', и здесь снова проблема. Когда я его использую MyShell - это строка с количеством процессов (/etc/update-motd.d/00-header также есть), но там нет слова zsh.получить имя оболочки linux

Итак, как я могу понять, какая оболочка использует журналирование лично.

+2

[Этот вопрос] (https://stackoverflow.com/questions/3327013/how-to-determine-the-current-shell-im-working-on) по крайней мере тесно связан, если не дубликат. – ajp15243

+0

@ ajp15243, спасибо большое! нашел его, извините за дубликат :( – PepeHands

ответ

2

«Интернет» дал вам один вид синтаксиса ps. Вы отметили этот linux, поэтому не используйте синтаксис BSD. Попробуйте это:

ps hp $$ -o cmd 

нет тира

+0

Таким образом я продолжаю получать: '/ bin/bash/etc/update-motd.d/00-header' – PepeHands

0

Пользователей оболочки определяются в/и т.д./пароле. Почему бы не взять информацию оттуда? Вы могли бы

grep $USER /etc/passwd | cut -f7 -d: 

, чтобы получить оболочку.

+0

Это дает оболочке, объявленной оболочкой входа пользователя, а не оболочку, которую пользователь фактически запускает (например, вы можете запустить «xterm -e/bin/zsh» или «exec/bin/zsh') –

+0

, но ни один из ваших примеров не связан с регистрацией. И op использует фразу" Итак, как я могу понять, какая оболочка использует журналирование лично? », Которая написана в« настоящем прогрессивном », указывающем на то, что определение оболочки происходит, а $ USER находится в процессе входа в систему. Возможно, я ошибаюсь, поскольку, поскольку я не являюсь родным английским языком speaker ... – Matthias

+0

Да, мне действительно нужно знать, какая оболочка использует человека, который пытается войти в 'ctrl + alt + f4', но, как и все остальные, вы не работаете. Решение Ur просто зависает и ничего больше Мне нужно использовать 'ctrl + c'. Все остальные плохо, потому что, когда я меняю свою оболочку на 'chsh -s/bin/zsh' $ SHELL все еще'/bin/bash' – PepeHands

Смежные вопросы