Неинтерактивная оболочка разворачивает псевдоним

Хорошо, я иду на конечность здесь и предлагаю, чтобы Вы не должны были делать этого проекта и не открывали систему ни для кого, потому что необходимо защитить систему строго, но если Вы все еще хотите сделать это, здесь некоторые вещи, которые необходимо, по крайней мере, рассмотреть:

  • Ограничьте/отклоните исходящий трафик и уже имейте весь источник для LFS на месте
  • Используйте что-то как selinux для обеспечения системы, т.е. никому не разрешают связать с портами и т.д.
  • Не позволяйте/загружает своей системе иначе, она может использоваться для того, чтобы совместно использовать файлы
  • Каждый пользователь должен работать над своей собственной системой иначе, это получит путаницу, и пользователь, позже присоединяющийся (т.е. только день спустя), должен будет выяснить, каков прогресс.

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

12
20.07.2015, 15:39
5 ответов

Из bash(1) man page:

Aliases не расширяются, когда оболочка не является интерактивной, за исключением тех случаев, когда опция оболочки expand_aliases устанавливается с помощью shopt (смотрите раздел Описание магазина в разделе СТРОИТЕЛЬНЫЕ СТРОИТЕЛЬНЫЕ КОМАНДЫ ниже).

14
27.01.2020, 19:55

Bash (1) говорит

...

Когда интерактивная оболочка, которая не является системой входа в систему, запускается, Bash читает и выполняет команды от ~ / .bashrc, если этот файл существует.

...

Интерактивная оболочка одна запущена без аргументов без опции и без опции -C -C, стандартный вход и ошибка и ошибка подключен к клеммам (Как определяется isatty (3)) или один начался с опцией -i.

Итак, очевидно, вы либо источник .Bashrc вручную или запущены на -i

, если псевдонимы - это все, что вам нужно, я бы порекомендовал разделить их в E.g. . Ализа, а затем источник, что из них .bashrc и ваш скрипт, на всякий случай, находящийся в том, чтобы все прогнозировали в .bashrc, который может нарушить ваш скрипт, так как часто бывает

0
27.01.2020, 19:55

У меня была та же проблема, и сначала shopt -s expand_aliases , похоже, не помогло. Я выяснил, что эти параметры должны быть установлены перед добавлением фактических псевдонимов. Поэтому, если псевдонимы созданы до того, как ваш .bashrc установит параметры expand_aliases , они будут недоступны. Следовательно, вы должны загрузить (или перезагрузить) псевдонимы после установки параметра.

2
27.01.2020, 19:55

Оболочка, которую вы получаете при удаленном выполнении команды с помощью SSH, не является ни интерактивной оболочкой, ни оболочкой входа в систему:

$ ssh server 'bash -c "echo $-"'
chsB

(нет i и нет l в ответе)

В случае Bash это означает, что ни один из обычных файлов инициализации не читается.

Вы можете заставить удаленную оболочку быть оболочкой входа в систему, добавив -l к вашему вызову Bash, что означает, что он будет анализировать первый из ~ / .bash_profile , ~ / .bash_login и ~ / .profile , которые он может найти, выполняя поиск в этом порядке, но не ~ / .bashrc . Это означает, что вместо этого вам придется поместить свои псевдонимы в один из этих файлов.

8
27.01.2020, 19:55

Вы можете решить любую проблему, введя:

if [ -f /etc/skel/.bashrc ]; then. /etc/skel/.bashrc; fi

в первой строке.

0
27.01.2020, 19:55

Теги

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