ypchsh не меняется на некоторые оболочки

446
Alice

Я в настоящее время в bash, но я хочу изменить свою оболочку на tcsh. Я использовал ypchsh, ввел свой пароль при появлении запроса, а затем изменил оболочку входа в систему / bin / tcsh. И казалось, что это работает, потому что я получаю сообщение, которое говорит: «Оболочка входа в систему была изменена на [домен]». Затем я вышел из системы и снова вошел в нее. Я сделал $ 0, чтобы проверить мою текущую оболочку, но он говорит, что я все еще в / bin / bash. Однако когда я выполняю echo $ SHELL, я получаю / bin / tcsh. И когда я делаю ps, он показывает, что вместо tcsh работает bash.

Были предприняты другие шаги по устранению неполадок: попытался сделать те же шаги, чтобы переключиться на разные оболочки, такие как sh и ksh, что работает. Однако, переход на csh дает мне тот же результат, что и попытка перейти на tcsh. Проверен / etc / shells и tcsh в списке. Я также попробовал exec tcsh, но система все еще работает под управлением bash.

Я пытаюсь сделать это на школьной учетной записи, поэтому, возможно, есть проблема с разрешением. Хотя один мой одноклассник смог заставить свой аккаунт сменить оболочку. Если нет разрешения, есть ли файл, который мне нужно настроить?

[user@machine ~]> echo $0 /bin/bash [user@machine ~]> echo $SHELL /bin/tcsh [user@machine ~]> ypchsh Changing NIS account information for user on machine Please enter password:  Changing login shell for user on machine To accept the default, simply press return. To use the system's default shell, type the word "none". Login shell [/bin/tcsh]: /bin/tcsh  The login shell has been changed on machine  [user@machine ~]> logout  [user@machine ~]> echo $0 /bin/bash [user@machine ~]> echo $SHELL /bin/tcsh [user@machine ~]> FOO=BAR [user@machine ~]> ps PID TTY TIME CMD 14549 pts/21 00:00:00 bash 14780 pts/21 00:00:00 ps [user@machine ~]> exec /bin/tcsh [user@machine ~]> echo $0 /bin/bash [user@machine ~]> echo $SHELL /bin/tcsh [user@machine ~]> FOO=BAR [user@machine ~]>  [user@machine ~]> uname -a Linux machine 2.6.32-696.3.2.el6.i686 #1 SMP Tue Jun 20 00:48:23 UTC 2017 i686 i686 i386 GNU/Linux [user@machine ~]> /bin/ls -ld drwx--s--x 49 user group 4096 Sep 1 13:08 . [user@machine ~]> /bin/*sh /bin/csh: /bin/csh: cannot execute binary file [user@machine ~]> /usr/bin/*sh Usage: amuFormat.sh <Card Type> <drive> <Card Type> has to be defined in amuFormat.sh itself <drive> has to be defined in mtools.conf 
2
Вы делаете все эти дополнительные шаги, чтобы увидеть, какую оболочку вы используете - что говорит *** первичное *** свидетельство? Что произойдет, если вы введете `FOO = BAR`? Какую оболочку вы действительно используете? А серьезно? Вы пробовали `exec tcsh` и все еще в bash? Я чувствую, что вы не рассказываете нам всю историю. Scott 6 лет назад 0
@ Скотт Я не очень знаком с системами Linux, можете ли вы объяснить, как я могу найти «первичное доказательство» и что вы имеете в виду, набрав FOO = BAR? Я также опубликовал историю команд, которые я сделал. Alice 6 лет назад 0
(0) Спасибо за предоставление обновления, но было бы яснее, если бы вы удалили символы `>` и вставили `$` перед командами оболочки. Лучше всего, если вы скопируете из своего терминала и вставите в Super User. (Конечно, можно редактировать конфиденциальную информацию, такую ​​как имя пользователя и имя компьютера.) Но если ваша подсказка оболочки изменится, покажите это. (1) Вы говорите, что не очень знакомы с системами Linux. Мне интересно, как много вы понимаете о оболочках \ * nix и почему вы хотите изменить свои. (2) Когда я говорю «FOO = BAR», я имею в виду «FOO = BAR» (после Enter) в приглашении оболочки. Scott 6 лет назад 0
Я обновил и вставил то, что я сделал в терминале. Попробовал FOO = BAR, но, похоже, ничего не сделал. Я ничего не знаю о оболочках nix, и мне нужно быть в tcsh, потому что упражнения в классе выполняются в tcsh, и было бы легче следовать, если бы моя оболочка была такой же. Alice 6 лет назад 0
Ах, но вам не нужно делать это вашей основной оболочкой только для этого, не так ли? Любая оболочка может быть запущена из любой другой оболочки, как обычная программа. grawity 6 лет назад 0
(1) Спасибо за разъяснение вашей ситуации (почему вы хотите / должны использовать tcsh). Но гравитация верна - если вам просто нужно что-то сделать в tcsh, не меняйте оболочки (с помощью chsh); просто запустите tcsh. (2) Спасибо за обновление вашего отчета о сеансе (показ подсказок оболочки и попытки `FOO = BAR`). Вы попадаете в сложную область - `` echo "$ 0" ``, `` echo "$ SHELL" `` и `ps` - все, как я уже сказал, вторичное доказательство - они могут давать вводящие в заблуждение ответы. Тот факт, что `FOO = BAR`, похоже, ничего не делает, является нормальным для члена семейства оболочек Bourne (sh, bash, ksh). … (Продолжение) Scott 6 лет назад 0
(Продолжение)… Если вы входите в семейство оболочек C (csh и tcsh), `FOO = BAR` выдаст вам сообщение об ошибке. (3) Тот факт, что ваше приглашение оболочки не изменяется, и `FOO = BAR` не выдает сообщение об ошибке после того, как вы (пытались) запустить tcsh, говорит, что это не проблема ypchsh, это это проблема tcsh. Это беспорядок; это не похоже на общую проблему (то есть, это необычно). Если вы хотите продолжить заниматься этим вопросом здесь, вам необходимо предоставить нам больше информации. Например: каковы общие настройки? Я имею в виду, вы (то есть, вы и ваши одноклассники) ... (продолжение) Scott 6 лет назад 0
(Продолжение)… есть ли на отдельных ПК под управлением Unix какой-либо формы (и эти ПК находятся в сети, использующей YP / NIS или NIS +), и ваша проблема * на * вашем индивидуальном ПК? Ваш одноклассник пытался войти в систему на вашем компьютере, или наоборот? Или вы используете ssh, PuTTY или что-то похожее для входа с ПК на удаленный / центральный компьютер под управлением Unix? Или что-то еще (например, использование терминалов для входа на удаленный / центральный компьютер)? В любом случае, это может помочь нам, если вы запустите следующие команды и сообщите о выводе: `uname -a`,… (продолжение) Scott 6 лет назад 0
(Продолжение)… `` / bin / ls -ld / bin / * sh / usr / bin / * sh | grep -v '\ .sh $' ``, `ls -l / proc / $$` и `cat / proc / $$ / cmdline && echo`. Они могут дать нам достаточно информации, чтобы дать вам ответ, или они могут просто предложить больше вопросов. Сожалею; Я не могу дать вам гарантию. (4) Поскольку я не могу гарантировать, что мы сможем ответить на ваш вопрос, вам лучше попросить вашего инструктора или местного системного администратора о помощи. Scott 6 лет назад 0
@grawity Я попытался выполнить exec / bin / tcsh и провел тест FOO = BAR, но ничего не произошло, как показано в опубликованной истории команд. Alice 6 лет назад 0
@ Скотт Я попробовал то, что я объяснил, что я сделал на посту первоначально на машине CentOS, которая не работала. А потом я попытался выполнить те шаги на машине, которые мой друг заставил работать, и на другой машине, но ни одна из них не сработала. Так что это может быть проблема с учетной записью. Я только попробовал шаги, которые вы предложили на терминале через PuTTY. Я опубликую результаты для / bin / ls -ld и ... / bin / * sh выше, но другие, которые я волнуюсь, могут быть слишком полезны, чтобы публиковать их, есть ли что-то, что вы ищете в этих результатах. И как мне найти общую настройку и тому подобное? Alice 6 лет назад 0
(1) `/ bin / ls -ld / bin / * sh / usr / bin / * sh | grep -v '\ .sh $' `- это все одна команда. Моя цель попросить вас выполнить эту команду, чтобы увидеть, является ли `/ bin / tcsh` ссылкой на` / bin / bash` в вашей системе, потому что это объясняет, что вы видите. (Если `/ bin / tcsh` маленький - менее 1000 байт - это также будет красным флагом.) (2) Я попросил` uname -a`, потому что это может указывать нам направление поиска. (3) `cat / proc / $$ / cmdline` может дать нам подсказку о том, как вызывается оболочка. … (Продолжение) Scott 6 лет назад 0
(Продолжение)… `ls -l / proc / $$` расскажет нам, что у вас есть в `/ proc`, что также может предоставить нам полезную информацию. (4) Под «общей настройкой» я подразумеваю вещи, которые настолько очевидны [для вас], что вам даже не стоит об этом упоминать: все ли вы используете одну и ту же машину (удаленно), или вы используете отдельные ПК с Unix / Linux, и другие материально-технические средства, которые, вероятно, были бы объяснены вам в первый день занятий (или в первом лабораторном занятии, если это необходимо). Я думаю, что объяснил это в своем комментарии (7 часов назад). Scott 6 лет назад 0
@ Скотт Я понял, почему он продолжает возвращаться к Bash! Я сравнил свой файл .cshrc с файлом моего друга и увидел, что там есть «exec / bin / bash -l», а он - нет. Не уверен, что я сделал, чтобы положить его туда, но я удалил его, и теперь я могу ypchsh в tcsh. Я проверил с FOO = BAR, и я получил ошибку обратно, так что теперь она работает. Спасибо за ваше время и подробные объяснения! Alice 6 лет назад 0
Ах; задним числом очевидно, но я, возможно, никогда не догадывался об этом. Спасибо за обновление меня. Вы можете поделиться своим открытием с большим количеством людей, разместив его в качестве ответа. Scott 6 лет назад 0

1 ответ на вопрос

0
Alice

Причина, по которой моя оболочка продолжает возвращаться к bash и даже не позволяет мне использовать exec для входа в tcsh, заключается в том, что exec /bin/bash -lв файле .cshrc была строка, в которой говорится: Чтобы исправить это, я удалил эту строку и с этого момента я могу переключать оболочки.

Похожие вопросы