Когда косая черта в пути Linux должна быть вне кавычек в скрипте bash

Почему первое расширение не работает, а второе работает?

Я знаю, что тильда должна быть расширена вне кавычек, но косая черта также должна была быть снаружи, неожиданно.

#!/bin/bash
ls ~"/Documents/bashscripts/test.sh"
ls ~/"Documents/bashscripts/test.sh"

1 ответ

Решение

Это тонкость в том, как работает расширение тильды. Во втором случае тильда, сопровождаемая косой чертой, расширяется до домашнего каталога текущего пользователя. В первом случае попытка раскрытия слова, сопровождаемого кавычками, осуществляется в домашний каталог пользователя с именем "/Documents/bashscripts/test.sh". Из справочной страницы, раздел Расширения Тильды:

... все символы, предшествующие первой без кавычек слеш, считаются префиксом тильды. Если ни один из символов в префиксе тильды не указан в кавычках, символы в префиксе тильды, следующие за тильдой, рассматриваются как возможное имя для входа....

Другие вопросы по тегам