Для обычного пользователя, чтобы смонтировать том (, даже если у него есть полный доступ к файлу устройства ), необходима запись в /etc/fstab
. Это явно не работает с динамическими именами устройств.
udev может только добавлять символические ссылки, но не изменять имя блочного устройства. Но для записи в fstab нужно настоящее имя.
Но вместо имени устройства можно использовать UUID файловой системы. udev может сделать устройство доступным для чтения для вашего пользователя и установить символическую ссылку, чтобы ваш пользовательский скрипт мог определить UUID.
запись fstab
UUID=8186709a-ab1f-4d18-80bb-b219cb126398 /mnt/tmp ext4 defaults,noauto,user,nofail 0 0
скрипт монтирования
current_uuid=$(blkid --output export /dev/myusb | grep ^UUID=)
mount "$current_uuid"
сопоставитель устройств
Другой подход заключается в размещении устройства отображения устройств поверх USB-устройства(man dmsetup
). Преимущество заключается в том, что таким образом вы получаете статическое имя, например. /dev/mapper/myusb
. Но я не знаю, как отреагирует DM устройство, если выдернуть флешку. Для этого вам могут понадобиться правила отключения udev. Это кажется намного более сложным и, вероятно, не стоит статического имени.
Bash читает .profile
только из оболочек входа в систему, для других интерактивных оболочек он читает вместо этого .bashrc
. (То же для /etc/profile
и /etc/bash.bashrc
). Во многих системах, включая Debian, значение по умолчанию /etc/bash.bashrc
устанавливает PS1
, поэтому для оболочек входа без -это то, что используется.
Ваш эмулятор терминала, вероятно, запускает оболочку как не -оболочку входа в систему, хотя, по крайней мере, некоторые из них могут быть настроены для запуска вместо нее оболочки входа. Например. Терминал Gnome должен иметь флажок «Выполнять команду как оболочку входа в систему», и если эмулятор позволяет вам изменить команду, которую он вызывает, вы можете использовать/bin/bash -l
(-l
или --login
для обозначения оболочки входа ).
Если вы не установили PS1
в одном из файлов bashrc
, оболочка, которая была запущена без PS1
в среде, в конечном итоге имела бы PS1
по умолчанию, давая что-то вроде bash-4.4$
, поэтому, вероятно, безопаснее всего установить PS1
в bashrc
.
Также обратите внимание, что если оболочка запущена как оболочка входа в систему, она не будет читать bashrc
сама по себе. Вот почему файлы profile
, например. Debian делает это явно.
Связанные: