[]
является ярлыком команды test
.
Согласноman test
:
-t FD
True if FD is a file descriptor that is associated with a terminal.
Таким образом, если вы используете bash как интерактивную оболочку (терминал -, см. эту ветку для объяснения терминологии ), bash будет заменен на zsh.
Подробнее о файлах.bash *:
When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
When a login shell exits, bash reads and executes commands from the files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.
Комментарий Стефана Шазела:
Обратите внимание, что оболочка может быть интерактивной без того, чтобы стандартный вывод был терминалом, и оболочка может быть не -интерактивной с терминалом на стандартном выходе (, как в любое время, когда вы запускаете скрипт в терминале без перенаправления/передачи его вывода ), и bash
может читать .bashrc
, даже если он не интерактивен (, как в ssh host cmd
, где bash
— это оболочка входа пользователя на хосте, илиbash --login -c 'some code'
). case $- in *i*)...
— это правильный способ проверить, является ли оболочка интерактивной.
Это, безусловно, возможно , так или иначе.
Я делаю это с файлом образа, двумя слоями файловой системы (ZFS )и одним слоем dm -crypt. Установку легко описать. :Поместите моментальный снимок -и транзакционную -устойчивую файловую систему в файл образа, поместите новый файл образа в эту файловую систему. Создайте зашифрованное блочное устройство этого файла с помощью cryptsetup. Создайте новую файловую систему на этом блочном устройстве и смонтируйте ее в удобном месте.
Теперь можно сделать моментальный снимок незашифрованной файловой системы и сохранить файл образа с зашифрованной файловой системой из этого моментального снимка.
Файловые системы должны быть -устойчивыми к транзакциям на случай, если моментальный снимок будет сделан в неудобное время. Незавершенные транзакции будут проигнорированы, и в результате должна получиться непротиворечивая версия файлов. Тем не менее, есть некоторые технические сложности с упорядочением, если обновляется несколько файлов (, которые я не могу объяснить ), поэтому база данных может быть расстроена результатом. Я думаю, что nilfs2 имеет параметр конфигурации для использования строгой синхронизации в этом случае, если это важно.
На практике существует множество сложных и -склонных к сбоям шагов по установке и удалению этого, поэтому рекомендуется использовать сложные и -устойчивые к сбоям сценарии с надлежащим тестированием того, что уже сделано/отменено. Я использую zfs, потому что он прост в управлении и упрощает эту задачу.