Я не уверен, что здесь один или два вопроса:
file /usr/bin/line1
wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1
file /usr/bin/line2
!#/usr/bin/bash
wine /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe > /dev/null 2>&1
[d3 ] Команда Wine отлично работает, но когда я запускаю /usr/bin/line1, я получаю: : ambiguous redirect1: 1
И когда я запускаю /usr/bin/line2, я получаю:
wine: bad interpreter: No such file or directory
How могу ли я запустить команду через скрипт bash? Что здесь происходит?
В первом файле вы можете перенаправить вывод только с помощью > /dev/null или &> /dev/null, которые будут перенаправлять stdout и stderr, поэтому нет необходимости в 2>&1.
Во втором файле , Я считаю, что правильным интерпретатором является #!/bin/bash.
дескрипторы файлов 1 и 2 (stdout & amp; stderr) могут быть закрыты вином, потому что он не использует их и может даже высвободить 0 (stdin) после того, как он установил обработчик клавиатуры. Кроме того, это было бы более справедливо для окон, поскольку все дескрипторы файлов доступны, как ожидается, в новом экземпляре программы.
Прежде всего: вы используете Wine, который в этом случае может потребовать воссоздать что-то, что имитирует среду выполнения командной оболочки Windows (cmd.exe).
Поскольку у вас нет сказал drive_c/Program\ Files\ \(x86\)/LINE/Line.exe, что нет возможности рассказать о своих требованиях.
Теперь : ambiguous redirect1: 1 выглядит как возможный вывод либо из Wine, либо из cmd.exe.
Может быть, вы необходимо убедиться, что ONLY WINE зависит от перенаправления стиля Linux. Возможно, вам придется посмотреть, что ожидает от Wine, и как защитить / отделить его параметры от тех, что были захвачены bash и vise versa.
Что нужно попробовать: поскольку это работает из командной строки bash, попробуйте source line2 для начала.
Если это работает, возможно, попробуйте вариант вроде этого - из сценария: bash <<EOF wine /home/aiao/.wine/drive_c/Program\ Files\ (x86)/LINE/Line.exe > /dev/null 2>&1 EOF
Еще один ... start - это инструмент командной строки Windows, который применяет те же задачи, что и двойной щелчок, например ссылку или файл, поэтому попробуйте:
wine start /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exeПримечание: БЕЗ перенаправления, если это работает, чтобы фактически запустить программу, тогда - если вам все еще нужно, вы можете попробовать добавить >/dev/null 2>&1 ( или что-то другое от других ответов) для Wine.