WedX - журнал о программировании и компьютерных науках

Как заставить файл .profile работать на машине Solaris?

Это расстраивало меня в течение двух дней, и кажется, что это должно быть очень просто. Я только что создал учетную запись на машине Solaris. Sun OS 5.10, кажется.

По умолчанию используется оболочка Bourne, которая мне не нужна. Я сделал cat /etc/shells, что приводит к:

/bin/sh
/sbin/sh
/bin/ksh
/usr/bin/ksh

Похоже, оболочка Korn - это все, что я могу использовать.

Я создал файл .profile и написал:

export SHELL=/usr/bin/ksh

Затем я сделал env, и похоже, что /bin/sh все еще указан как моя оболочка. Я вышел из системы, снова вошел в систему, и теперь я получаю:

-sh: SHELL=/usr/bin/ksh: is not an identifier

Я пытался добавить #!/usr/bin/ksh в начало .profile. Это не сработало. Я пытался добавить точку с запятой в конце export. Это не сработало. Я пробовал: SHELL=/bin/ksh и это тоже не сработало.

Моя конечная цель — довести эту среду до такой степени, чтобы я мог работать продуктивно. Я привык к BASH, где у меня есть завершение табуляции, стрелка вверх для истории и т. Д., А в этой оболочке Bourne ничего этого нет, и это меня бесконечно расстраивает.

Я знаю, что это должно быть просто, но все мои поиски в Google ни к чему не привели. Кто-нибудь может мне помочь?

27.02.2014

  • Древняя оболочка Bourne в Solaris не поддерживает современный синтаксис export FOO=bar, вы должны использовать старый стиль FOO=bar ; export FOO. 28.02.2014

Ответы:


1

/etc/shells не является стандартным файлом Solaris, вам, вероятно, не следует полагаться на его содержимое.

С другой стороны, bash является частью установки Solaris 10 по умолчанию. Он уже должен присутствовать как /bin/bash (на самом деле /usr/bin/bash, но /bin в любом случае является символической ссылкой на /usr/bin).

Если bash там нет, вы можете попросить администратора установить пакет SUNWbash из каталога Solaris_10/Product на установочном носителе.

Затем, чтобы обновить вашу оболочку, обычным способом является обновление оболочки, определенной для вашей учетной записи. Если оно локальное, это последнее поле в записи /etc/passwd.

В качестве альтернативы вы можете использовать этот хак в конце вашего .profile:

[ ! "$BASH_VERSION" -a -x /bin/bash ] && SHELL=/bin/bash exec /bin/bash 
28.02.2014
  • Я попытался перейти к /usr/bin/bash или /bin/bash, и оба не существуют. Я буду считать это означающим, что у меня просто нет bash :( В любом случае, я посмотрел /etc/passwd и хочу, чтобы мой системный администратор обновил оболочку, которая у меня есть в моей учетной записи, чтобы она была /bin/ksh вместо /bin/sh Я буду держать вас в курсе. 28.02.2014
  • Что говорит cat /etc/release ? 28.02.2014
  • @jliagre: Солярис 10 10/09 s10s_u8wos_08a 03.03.2014
  • Должно быть, это какая-то минимизированная установка. Ответ обновлен 03.03.2014
  • @jliagre, спасибо, я приму ваш ответ, потому что, хотя bash не установлен на моей машине, информация о /etc/passwd помогла мне перейти с sh на ksh. 04.03.2014

  • 2

    В порядке убывания предпочтения

    1. попросите системного администратора установить bash и обновить /etc/shells и обновить оболочку входа в систему
    2. посмотрите, установлена ​​ли программа chsh, которая позволит вам изменить собственную оболочку входа в систему
    3. попросите системного администратора изменить вашу оболочку входа в систему на /usr/bin/ksh
    4. измените свой ~/.profile:

      if type [[ >/dev/null; then
          : # this is ksh
      else
          # not ksh
          export SHELL; SHELL=/usr/bin/ksh
          exec $SHELL
      fi
      
    27.02.2014
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]