Мое решение состояло в создании символической ссылки в / lib / cpp, которая указывает на gcc.
ln -sv "$(which gcc)" /lib/cpp
Сообщение об ошибке создается, потому что тильда ~ цитируется, как описано в ответе Занны. Если вы хотите использовать ~, соответствующая часть скрипта должна быть:
BIN_DIR=~/bin/
Если для ответить вы хотите процитировать строку, вы можете использовать переменная среды $HOME:
BIN_DIR="$HOME/bin/"
На мой взгляд, второй подход - лучшая практика.
Сообщение об ошибке создается, потому что тильда ~ цитируется, как описано в ответе Занны. Если вы хотите использовать ~, соответствующая часть скрипта должна быть:
BIN_DIR=~/bin/
Если для ответить вы хотите процитировать строку, вы можете использовать переменная среды $HOME:
BIN_DIR="$HOME/bin/"
На мой взгляд, второй подход - лучшая практика.
Сообщение об ошибке создается, потому что тильда ~ цитируется, как описано в ответе Занны. Если вы хотите использовать ~, соответствующая часть скрипта должна быть:
BIN_DIR=~/bin/
Если для ответить вы хотите процитировать строку, вы можете использовать переменная среды $HOME:
BIN_DIR="$HOME/bin/"
На мой взгляд, второй подход - лучшая практика.
Это не работает, потому что ~ цитируется. Двойные кавычки " подавляют расширение тильды. Нет директории с буквальным именем ~/bin. Как объяснено в man bash (выделено мной):
Расширение Тильды Если слово начинается с символа без символа тильды (`~ '), все символы, предшествующие первому некотируемому косую черту (или все символы, если нет некотируемой косой черты) считаются тильд-префиксом. Если ни один из символов префикса тильды не указан, символы в тильде-префиксе, следующие за тильдой, рассматриваются как возможное имя входа. Если это имя входа является пустой строкой, тильда заменяется значением параметра shell HOME. Если HOME отключен, вместо него вместо этого заменяется домашний каталог пользователя, выполняющего оболочку. В противном случае тильда-префикс заменяется домашним каталогом, связанным с указанным именем входа.Вы можете удалить кавычки, так как ~ является единственным символом в пути ~/bin, который заставит оболочку выполнять расширение, и мы хотим, чтобы расширение в этом случае. Оболочка Двойные кавычки любые дальнейшие расширения на результат расширения тильды, по крайней мере в Bash 4, которые все текущие или отдаленно недавние релизы расширения Ubuntu tilde . Итак, даже если ваш домашний каталог содержит необычные символы, такие как пробелы, все в порядке.
Вы можете удалить кавычки из ~, потому что по крайней мере в Bash 4 не подавляется двойными кавычками, только одинарными кавычками. Двойные кавычки гарантируют, что расширенное значение не подвержено никаким дополнительным расширениям, поэтому man bash или расширение имени файла не произойдет. Таким образом, $HOME работает даже с странно названными домашними каталогами, если вы сохраняете двойные кавычки.
Это не работает, потому что ~ цитируется. Двойные кавычки " подавляют расширение тильды. Нет директории с буквальным именем ~/bin. Как объяснено в man bash (выделено мной):
Расширение Тильды Если слово начинается с символа без символа тильды (`~ '), все символы, предшествующие первому некотируемому косую черту (или все символы, если нет некотируемой косой черты) считаются тильд-префиксом. Если ни один из символов префикса тильды не указан, символы в тильде-префиксе, следующие за тильдой, рассматриваются как возможное имя входа. Если это имя входа является пустой строкой, тильда заменяется значением параметра shell HOME. Если HOME отключен, вместо него вместо этого заменяется домашний каталог пользователя, выполняющего оболочку. В противном случае тильда-префикс заменяется домашним каталогом, связанным с указанным именем входа.Вы можете удалить кавычки, так как ~ является единственным символом в пути ~/bin, который заставит оболочку выполнять расширение, и мы хотим, чтобы расширение в этом случае. Оболочка Двойные кавычки любые дальнейшие расширения на результат расширения тильды, по крайней мере в Bash 4, которые все текущие или отдаленно недавние релизы расширения Ubuntu tilde . Итак, даже если ваш домашний каталог содержит необычные символы, такие как пробелы, все в порядке.
Вы можете удалить кавычки из ~, потому что по крайней мере в Bash 4 не подавляется двойными кавычками, только одинарными кавычками. Двойные кавычки гарантируют, что расширенное значение не подвержено никаким дополнительным расширениям, поэтому man bash или расширение имени файла не произойдет. Таким образом, $HOME работает даже с странно названными домашними каталогами, если вы сохраняете двойные кавычки.
Это не работает, потому что ~ цитируется. Двойные кавычки " подавляют расширение тильды. Нет директории с буквальным именем ~/bin. Как объяснено в man bash (выделено мной):
Расширение Тильды Если слово начинается с символа без символа тильды (`~ '), все символы, предшествующие первому некотируемому косую черту (или все символы, если нет некотируемой косой черты) считаются тильд-префиксом. Если ни один из символов префикса тильды не указан, символы в тильде-префиксе, следующие за тильдой, рассматриваются как возможное имя входа. Если это имя входа является пустой строкой, тильда заменяется значением параметра shell HOME. Если HOME отключен, вместо него вместо этого заменяется домашний каталог пользователя, выполняющего оболочку. В противном случае тильда-префикс заменяется домашним каталогом, связанным с указанным именем входа.Вы можете удалить кавычки, так как ~ является единственным символом в пути ~/bin, который заставит оболочку выполнять расширение, и мы хотим, чтобы расширение в этом случае. Оболочка Двойные кавычки любые дальнейшие расширения на результат расширения тильды, по крайней мере в Bash 4, которые все текущие или отдаленно недавние релизы расширения Ubuntu tilde . Итак, даже если ваш домашний каталог содержит необычные символы, такие как пробелы, все в порядке.
Вы можете удалить кавычки из ~, потому что по крайней мере в Bash 4 не подавляется двойными кавычками, только одинарными кавычками. Двойные кавычки гарантируют, что расширенное значение не подвержено никаким дополнительным расширениям, поэтому man bash или расширение имени файла не произойдет. Таким образом, $HOME работает даже с странно названными домашними каталогами, если вы сохраняете двойные кавычки.