1

Я использую Cygwin 64-bit на Windows.

Когда я запускаю экземпляр mintty с помощью ярлыка "Cygwin64 Terminal" на рабочем столе, который поставляется с установкой Cygwin, он работает нормально, и все установленные команды работают.

Однако, когда я запускаю mintty.exe , откуда он находится в C:\cygwin64\bin , я получаю command not found .

У меня также есть настроенный скрипт AutoHotKey, который запускает экземпляр mintyy.exe в каталоге Desktop по нажатию клавиши NumPad. Когда mintyy запускается таким образом, он также выдает command not found . cd ING в любой другой папке, или делать cd - диск самостоятельно, не исправить это либо. Все, что кажется важным, - то, откуда изначально был запущен мятный экземпляр

Вот некоторые из команд, которые отображают ошибки:

killall
man
info
wc
which
ssh
clear

Большинство из них включены как часть базового пакета Cywgin и, следовательно, определенно установлены как часть инсталляции Cygwin, поэтому я действительно не уверен, что здесь происходит.

Команды, которые работают, как правило , ограничиваются перечисленными, когда я help в терминале. Вот весь результат этой команды.

$ help
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

job_spec [&]                            history [-c] [-d offset] [n] or hist>
(( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
. filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
:                                       kill [-s sigspec | -n signum | -sigs>
[ arg... ]                              let arg [arg ...]
[[ expression ]]                        local [option] name[=value] ...
alias [-p] [name[=value] ... ]          logout [n]
bg [job_spec ...]                       mapfile [-d delim] [-n count] [-O or>
bind [-lpsvPSVX] [-m keymap] [-f file>  popd [-n] [+N | -N]
break [n]                               printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]]       pushd [-n] [+N | -N | dir]
caller [expr]                           pwd [-LP]
case WORD in [PATTERN [| PATTERN]...)>  read [-ers] [-a array] [-d delim] [->
cd [-L|[-P [-e]] [-@]] [dir]            readarray [-n count] [-O origin] [-s>
command [-pVv] command [arg ...]        readonly [-aAf] [name[=value] ...] o>
compgen [-abcdefgjksuv] [-o option] [>  return [n]
complete [-abcdefgjksuv] [-pr] [-DE] >  select NAME [in WORDS ... ;] do COMM>
compopt [-o|+o option] [-DE] [name ..>  set [-abefhkmnptuvxBCHP] [-o option->
continue [n]                            shift [n]
coproc [NAME] command [redirections]    shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=v>  source filename [arguments]
dirs [-clpv] [+N] [-N]                  suspend [-f]
disown [-h] [-ar] [jobspec ... | pid >  test [expr]
echo [-neE] [arg ...]                   time [-p] pipeline
enable [-a] [-dnps] [-f filename] [na>  times
eval [arg ...]                          trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [argume>  true
exit [n]                                type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilnrtux] [-p] name[=v>
false                                   ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
fg [job_spec]                           unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name >  variables - Names and meanings of so>
getopts optstring name [arg]            wait [-n] [id ...]
hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...]               { COMMANDS ; }

Тем не менее, еще более запутанно, ping не является частью этого списка, но также работает.

У кого-нибудь есть идеи, что здесь происходит?

2 ответа2

3
  1. В каталоге C:\cygwin64\ должен быть файл Cygwin.bat (он будет запускать bash в терминале Windows, также называемый CMD), использовать его вместо mintty или, если вы предпочитаете консоль mintty вам нужно запустить его как \full\path\to\mintty - (тир - символ является частью команды !!! ) правильно настроить среду Cygwin. Исправьте это в своем "скрипте AutoHotKey", чтобы решить вашу проблему.
    Черта - символ на конце mintty сделать то же самое , как bash -l - она используется в качестве оболочки. Если вы используете mintty без дефиса на конце, он ведет себя как обычный exe-файл без настройки среды cygwin, но с параметром - он эмулирует обычный "вход" в систему.
  2. Убедитесь, что программы, которые вы ищете
    killall man info wc which ssh clear
    установить снова, запустив установочный файл cygwin setup.exe и набрав эти программы в поле поиска, в списке вы увидите, проверены ли они как установленные или нет. Проверьте, чтобы установить их и перейти к следующему, если он не помечен как установленный.
  3. Когда вы вызываете ping, вы используете версию ping для Windows, а не Cygwin. Если вы установили пакет ping при установке cygwin вам нужно вызывать его с полным путем, где он находится.
    C:\cygwin64\bin\ping.exe (или /bin/ping если вы находитесь внутри терминала cygwin), в противном случае будет выполнена версия ping окна.

Cygwin может использоваться в двух режимах работы: один, когда вы вызываете утилиту cygwin напрямую из любых программ Windows или файлов bat (используйте grep например, в ваших файлах bat), второй режим работы, когда вы хотите эмулировать операционную систему на основе unix Чтобы сделать это, вам необходимо войти в виртуальную операционную систему, известную как cygwin, таким образом, mintty- Terminal (или bash -l) правильно настроит всю среду, как это происходит при входе в реальную операционную систему на основе Unix.

1

Чтобы правильно установить PATH, вы должны указать mintty запустить оболочку как оболочку входа в систему.

возможные пути:

C:\cygwin64\bin\mintty.exe -
C:\cygwin64\bin\mintty.exe /bin/bash -l

Смотрите man mintty для деталей.
Без - или правильной команды bash PATH по-прежнему является Windows без каталогов Cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .