zsh продолжает забывать, СОЕДИНЯЮТ Вар каналом

По умолчанию, cp тесты, если его последним аргументом является существующий каталог. Если это происходит, cp создает ссылку в том каталоге, с базовым именем источника. Таким образом, учитывая команду

cp foo/bar wibble

если wibble существующий каталог затем cp копирует источник в wibble/bar. Если wibble не существует затем cp связывает источник с wibble.

Если Вы хотите быть уверенными, что копия всегда wibble, затем можно указать --no-target-directory (псевдоним -T) опция. Тот путь, если cp успешно выполняется, можно быть уверены, что копию называют wibble. Если wibble уже существовал как каталог, затем cp перестанет работать.

В табличной форме:

The target is …             Without -T               With -T
existing directory          copy in the directory    error
existing file (not dir)     overwrite                overwrite
does not exist              create                   create

Единственная разница - это с -T, в случае, если цель является существующим каталогом, команда возвращает ошибку. Это полезно, когда Вы ожидаете, что каталог не будет существовать: Вы получаете сообщение об ошибке вместо чего-то непредсказанный случай.

То же относится mv и ln. Если цель является существующим каталогом, с -T, они сигнализируют об ошибке вместо того, чтобы тихо делать что-то другое.

С cp, существует другой случай. Если Вы делаете рекурсивная копия и источник являются каталогом, то cp -T копирует содержание источника в место назначения, вместо того, чтобы копировать сам источник. Таким образом, данный

$ tree source destination 
source
└── foo
destination
└── bar

затем

$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'

тогда как

% cp -rvT source destination
`source/foo' -> `destination/foo'
2
17.04.2015, 13:53
2 ответа

Установите переменные среды в ваш файл ~ / .zshrc ~ / .zshrc , они автоматически получат источники на каждой сессии ZSH.

1
27.01.2020, 22:00

Согласно руководству пользователя zsh , псевдонимы должны быть определены в ~ / .zshrc :

Вы можете придумать некоторые псевдонимы, которые хотите определить в своих файлах запуска; .zshrc - это, вероятно, подходящее место.

Здесь также есть совет по поддержанию чистоты вашего ~ / .zshrc :

Я обычно использую псевдонимы только в интерактивных оболочках, поэтому я определяю их из .zshrc, но вы можете использовать .zshenv, если вы используете псевдонимы более . Фактически, чтобы сохранить мой .zshrc аккуратным, я сохраняю все псевдонимы в отдельном файле с именем .aliasrc, а в .zshrc у меня есть:

 if [[-r ~ / .aliasrc]]; затем 
. ~ / .aliasrc 
fi 
 

, который проверяет, есть ли читаемый файл ~ / .aliasrc, и если есть, запускает его точно так же, как запускаются обычные файлы запуска.

Итак, вы можете создать файл с именем ~ / .aliasrc и использовать его (. означает источник ) из вашего ~ / .zshrc .

тот же источник предлагает, чтобы переменные среды были в ~ / .zshenv :

Проще всего поместить их в .zshenv - отсюда и название. Переменные среды будут передаваться в любые программы, запускаемые из оболочки, поэтому может быть достаточно определить их в .zlogin или.zprofile: однако любая оболочка, запущенная для вас в неинтерактивном режиме, не будет запускать их, и есть другие возможные проблемы, если вы используете оконную систему, которая запускается оболочкой, отличной от zsh, или которая не запускает запуск оболочки файл вообще --- мне пришлось настроить мой, чтобы он сделал это. Так что .zshenv - самое безопасное место; определение переменных среды не займет много времени. Другие люди, несомненно, будут придерживаться совершенно противоположных взглядов, но это люди для вас.

3
27.01.2020, 22:00

Теги

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