команда недоступна в сценарии bash

Получил ответ от полезного канала IRC #systemd .

/sys/class/net

Все устройства, указанные там под именем systemd-networkd, будут их использовать.

0
14.04.2019, 10:53
3 ответа

Это проблема, с которой я столкнулся при запуске скриптов через cron. Я не уверен, применимо ли это здесь, но попробуйте добавить свой путь в начало скрипта. Что-то вроде...

    #!/bin/bash

    PATH="/your/path"
   ...
0
28.01.2020, 02:14

Когда вы пишете сценарий, он обычно не использует ваши псевдонимы.

Вы можете явно указать команду в своем скрипте:

#!/bin/sh
oTools="/home/user/folder/oTools-cli"
for file in./folder/*
do
    ${oTools} upload "${file}"
done
2
28.01.2020, 02:14

Вы столкнулись как минимум с двумя проблемами:

  • Псевдонимы не раскрываются, когда оболочка не интерактивна, если только параметр оболочки expand_aliasesне установлен с помощью shopt.

  • .bashrcобычно содержит конфигурацию для интерактивных оболочек, а не для скриптов (, то есть не -интерактивных оболочек ).

Есть несколько решений:

# Set expand_aliases option and add the alias (in your script)
shopt -s expand_aliases
alias oTools="/home/user/folder/oTools-cli"

# Create a function instead of an alias (in your script)
oTools() { /home/user/folder/oTools-cli "$@"; }

# Add /home/user/folder to your PATH (in your.profile)
PATH="/home/user/folder:$PATH"
5
28.01.2020, 02:14

Теги

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