Я попытался запустить панель запуска Android Studio (studio.sh), чтобы использовать установленную вручную Java (а не общесистемную Java по умолчанию). Поскольку я уже объявлял PATH и JAVA_HOME в моем файле .bashrc, я просто получил этот файл в сценарии оболочки:Почему тильда в пути не расширена в сценарии оболочки?
. /home/foobar/.bashrc
но по какой-то причине $ JAVA_HOME/bin/java по-прежнему не был признан исполняемым файлом скриптом.
Я добавил несколько журналов и выяснил, что JAVA_HOME был расширен как ~/install/java ..., то есть оператор тильды не был расширен в домашний каталог.
Я искал, но не смог найти причину, по которой он не был расширен. Является ли тильда специфичной для Bash функцией (сценарий использует #!/Bin/sh, а Linux Mint использует тире, а не bash)? Не помогает ли тильда в некоторых обстоятельствах?
Я заменил ~ на $ HOME в своем объявлении .bashrc, а затем он работал, поэтому HOME известен во время выполнения.
[Этот ответ] (http://stackoverflow.com/a/29310477/258523) может быть лучше, но на самом деле я не смотрел на тот, который вы слишком тщательно связали. –
@EtanReisner Спасибо. Есть несколько давних вопросов о расширении моей хранимой тильды, которые могут потребовать обнуления. Этот подходит; Я отредактирую его. (Я бы скорее связался с вопросом, чем с ответом, потому что широта ответов полезна для понимания преимуществ и недостатков каждого.) –
Да, у меня было несколько вкладок такого типа какое-то время ждут меня, чтобы решить, как хорошо их обмануть.Я почти опубликовал мета-вопрос о том, можно ли заставить модератора перенести некоторые из лучших ответов на новый канонически заданный вопрос или что-то еще. –