Если вывод echo $0
команда -bash
это означает это bash
был вызван как оболочка входа в систему. Если вывод только bash
, затем Вы находитесь в оболочке невхода в систему.
man bash
говорит где-нибудь в строке 126:
A login shell is one whose first character of argument zero is a -, or one started with the --login option.
Посмотрите больше о здесь: Различие между Входом в систему Shell и Невходом в систему Shell?.
Теперь, для объяснения, почему Вы добираетесь /bin/bash
во втором случае я могу сказать, что программа (в Вашем случае Ваш файловый менеджер, вероятно, наутилус) или сценарий может изменить свое собственное $0
к чему-то еще. Как пример видят то, что происходит с $0
в моем терминале (тот же терминал все время):
] Попробуйте: [
] [fdisk -l | grep -o '^/dev/sdb[0-9]'
]
[] Опция [] -o [
] заставляет [] grep[
] печатать только совпадающий образец. [
][]Обновлено[][
] []Если вы хотите, чтобы все, кроме []/dev/sdaX[
], вы можете использовать:[
fdisk -l | grep -o '^/dev/sd[b-z][0-9]'
] Попробуйте это.
за получение /dev/sdb1
fdisk -l | grep -w "/dev/sdb1" | awk '{print $1}'
Вы можете использовать sed
...
Поскольку путь к каталогу содержит /
, я решил использовать _
для ограничения sed -команда (хотя обычно используются /
, любой символ может использоваться в качестве разделителя).
fdisk -l | sed -n 's _ ^ \ (/ dev / [^] * \). * $ _ \ 1_p'
Для тех, у кого нет root-доступа, вы можете использовать простой ls
:
ls /dev/sd* | grep -o '/dev/sd[a-z][1-9]'
Измените регулярное выражение по своему усмотрению.
ОБНОВЛЕНИЕ: Как упомянул @ StéphaneChazelas, наличие файлов устройства не подтверждает существование основного устройства. Было бы безопаснее вместо этого запросить / proc / partitions
:
awk '$NF ~ /^sd[a-z][0-9]+/ {print "/dev/" $NF}' < /proc/partitions