Как обновить символическую ссылку на содержимое источника?

Да, будет работать корректно.

a=$(declare -f cd);

И

b='cd () 
{ 
    prev_cd "$@";
    echo "botch cd hook invoked.";
    run_botch
}'

Соответствует правильно:

[[ "$a" == "$b" ]] && echo match

Звездочки не нужны.

Одно предостережение: расширение команды a=$(declare -f cd)удаляет все пробелы в конце (с IFS по умолчанию ). Поэтому переменная bзаканчивается на:

}'

, а не с

}
'

, что приведет к сбою (точного )совпадения.


Если вы хотите проверить, существует ли какая-либо строка внутри переменной a, вам нужны звездочки:

[[ $a == *run_botch* ]] && echo match

Кавычки необязательны (слева ), справа кавычки могут изменить интерпретацию строки.

0
18.04.2020, 14:39
1 ответ

На самом деле это ожидаемое поведение. Ваша команда создаст ссылки на текущее содержимое каталога /my/source/.

Простое решение — связать сам каталог:

ln -s /my/source./

будет создана ссылка вида:

source -> /my/source

Но также inotifytools можно использовать для просмотра каталога и выполнения действий.

0
19.03.2021, 02:28

Теги

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