Получение специальной статистики Ethernet

~— это ярлык для вашего домашнего каталога, но только когда он появляется в начале строки вне кавычек . Начало правой -части оператора присваивания является началом строки, поэтому env1=~/Dropbox/.envбудет работать как (или env1=~"/Dropbox/.env"или любое количество вариантов ). Он устанавливает env1в /home/roach/Dropbox/.env. Но env1="~/Dropbox/.env"устанавливает env1в точную строку ~/Dropbox/.env, которая в качестве имени файла выглядит внутри каталога с одним -символьным именем ~в текущем каталоге.

Тильда — это аббревиатура, а не подстановочный знак. $env1вне кавычек расширяет подстановочные знаки в значении env1, но не расширяет тильду, потому что тильда не является подстановочным знаком.

Вы также можете использовать env1="$HOME/Dropbox/.env". Это эквивалентно env1=~/Dropbox/.env. Символ$(доллар )имеет особое значение внутри двойных кавычек (это то же значение, что и вне кавычек ):он начинает подстановку переменной (или команду или арифметическую подстановку ). С другой стороны, символ~(тильда )является обычным символом, если он заключен в кавычки, даже в двойные кавычки.


Что касается псевдонима, причина, по которой он не работает в сценарии bash, заключается в том, что bash по умолчанию не расширяет псевдонимы в сценариях.Он не будет работать ни в одном сценарии, если вы не включите или не получите определение псевдонима в этом сценарии, поскольку псевдонимы являются свойством каждого экземпляра оболочки. Они не являются частью среды процесса.

Причина, по которой псевдоним вообще работает во втором скрипте, заключается в том, что dotdrop сама расширяет тильду, когда читает значение конфигурации.

0
28.07.2021, 07:58
0 ответов

Теги

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