Почему zsh не может прочитать ~ (тильду) по пути в скрипте? - PullRequest
1 голос
/ 09 июля 2019

Когда zsh экспортировал PATH из скрипта, он неправильно прочитал путь.

Мой PATH был export PATH="~/path/to/stuff/", но когда я попытался запустить команду, расположеннуюпо этому пути zsh не смог его найти.

Когда я изменил PATH на export PATH="$HOME/path/to/stuff/", zsh смог выполнить команду.

РЕДАКТИРОВАТЬ: Странно то, что я только что проверил это, и он снова работает с export PATH="~/path/to/stuff/".Должно быть, что-то странное происходит с моей средой разработки.

РЕДАКТИРОВАТЬ 2: Ранее я не упоминал, что скрипт, из которого я читаю export PATH="~/path/to/stuff/", создает локальную среду разработки длякоманда разработчиков, которые в основном используют bash в качестве оболочки.Я предпочитаю использовать zsh, поэтому мне нужно, чтобы моя оболочка хорошо играла со всеми конфигами для доминирующей настройки bash в команде.

1 Ответ

0 голосов
/ 10 июля 2019

Используйте следующий код, чтобы получить то, что вы хотите:

export PATH=~/Desktop/Capture/
echo $PATH

# Result:    /Users/swift/Desktop/Capture/

Хотя, когда вы используете строку, вы получите это:

export PATH="~/Desktop/Capture/"
echo $PATH                      

# Result:    ~/Desktop/Capture/

Таким образом, чтобы сделать это правильно, вам нужно попробовать этот подход :

tilde=~
export PATH="${tilde}/Desktop/Capture/"
echo $PATH                             

# Result:    /Users/swift/Desktop/Capture/

PS Также есть одна полезная команда для расширения тильды .

Вот пример :

echo tilda=~

# Result:    tilda=~

Использование команды magicequalsubst в zsh:

set -o magicequalsubst
echo tilda=~    

# Result:    tilda=/Users/swift
...