Я столкнулся с аналогичной проблемой при обновлении с 15.10 по 16.04. Мышь будет работать в течение 5 секунд, а затем перейдет в спящий режим и не будет работать снова, если я не нажму кнопку. Моим решением было удалить энергосберегающий пакет, предназначенный для ноутбуков, а затем перезагрузиться:
sudo apt remove laptop-mode-tools
sudo reboot
Из руководства bash:
Если имя не является ни функцией оболочки, ни встроенным, и не содержит косых черт, bash ищет каждый элемент PATH для каталога, содержащего исполняемый файл с этим именем.Это означает, что функции и встроенные команды оболочки имеют приоритет в первую очередь, а если их нет - он ищет команду в списке каталогов, указанных в переменной PATH.
То, с чем вы столкнулись, - это команда test, которая является встроенной командой, совместимой с оригинальной оболочкой Bourne в bash. Эта команда неактивна и используется для простой логики, арифметической оценки и оценки строк. Он используется в логических выражениях и если утверждения:
bash-4.3$ test 1 -le 2 && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if test 1 -le 2 ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Обратите внимание, что test и [ точно такие же:
bash-4.3$ [ 1 -le 2 ] && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if [ 1 -le 2 ] ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Существует также /usr/bin/test стандартные утилиты и существуют для мобильности и совместимости. Если в вашей оболочке не было test, он просмотрел переменную PATH, и если /usr/bin/ оказался до вашего ~/bin в списке - он запустил бы /usr/bin/test. Вот пример этого:
bash-4.3$ enable -n test
bash-4.3$ PATH="$HOME/bin/:$PATH" test
I am ~/bin/test
Используя команду enable -n, мы отключим встроенный test и временно запустим test с измененным PATH, таким образом, мой ~/bin первый в списке. Оболочка просматривает список и находит мой сценарий оболочки ~/bin/test и запускает его.
ПРИМЕЧАНИЕ: пожалуйста, не делайте этого! Вышеприведенный пример предназначен только для демонстрации! Это не лучший способ запускать ваши скрипты и не рекомендуется. Используйте соответствующее имя, никогда не называйте свои команды такими же, как встроенные оболочки или существующие утилиты. Вы были предупреждены.
Что случилось в вашем случае test.sh, так это то, что нет встроенного или функций, называемых test.sh, и поэтому оболочка просмотрел каждый каталог в списке PATH, пока он не нашел ваш файл test.sh и не запустил его. Вот почему это работает.
No. Это не имеет никакого отношения к расширениям файлов, и на самом деле для большинства файлов расширение не имеет значения. Shell заботится о расположении того, что вы вводите в командной строке, если это встроенная функция или функция или псевдоним, и если указанный вами файл имеет установленные разрешения.
Кроме того, он заботится о соответствующей строке #! (которая более формально известна как встроенная команда , совместимая с оригинальной оболочкой Bourne ), потому что, если у вас написан сценарий скрипта для C-оболочки, но у него нет соответствующей строки #! вверху, и вы пытаетесь запустить ее с помощью bash - оболочка попытается запустить ее, но она сломается из-за несовместимого синтаксиса.
В общем, Linux и Unix-подобные системы в основном заботятся о магических числах, которые вначале несколько байтов в файле, который идентифицирует тип файла.
Из руководства bash:
Если имя не является ни функцией оболочки, ни встроенным, и не содержит косых черт, bash ищет каждый элемент PATH для каталога, содержащего исполняемый файл с этим именем.Это означает, что функции и встроенные команды оболочки имеют приоритет в первую очередь, а если их нет - он ищет команду в списке каталогов, указанных в переменной PATH.
То, с чем вы столкнулись, - это команда test, которая является встроенной командой, совместимой с оригинальной оболочкой Bourne в bash. Эта команда неактивна и используется для простой логики, арифметической оценки и оценки строк. Он используется в логических выражениях и если утверждения:
bash-4.3$ test 1 -le 2 && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if test 1 -le 2 ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Обратите внимание, что test и [ точно такие же:
bash-4.3$ [ 1 -le 2 ] && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if [ 1 -le 2 ] ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Существует также /usr/bin/test стандартные утилиты и существуют для мобильности и совместимости. Если в вашей оболочке не было test, он просмотрел переменную PATH, и если /usr/bin/ оказался до вашего ~/bin в списке - он запустил бы /usr/bin/test. Вот пример этого:
bash-4.3$ enable -n test
bash-4.3$ PATH="$HOME/bin/:$PATH" test
I am ~/bin/test
Используя команду enable -n, мы отключим встроенный test и временно запустим test с измененным PATH, таким образом, мой ~/bin первый в списке. Оболочка просматривает список и находит мой сценарий оболочки ~/bin/test и запускает его.
ПРИМЕЧАНИЕ: пожалуйста, не делайте этого! Вышеприведенный пример предназначен только для демонстрации! Это не лучший способ запускать ваши скрипты и не рекомендуется. Используйте соответствующее имя, никогда не называйте свои команды такими же, как встроенные оболочки или существующие утилиты. Вы были предупреждены.
Что случилось в вашем случае test.sh, так это то, что нет встроенного или функций, называемых test.sh, и поэтому оболочка просмотрел каждый каталог в списке PATH, пока он не нашел ваш файл test.sh и не запустил его. Вот почему это работает.
No. Это не имеет никакого отношения к расширениям файлов, и на самом деле для большинства файлов расширение не имеет значения. Shell заботится о расположении того, что вы вводите в командной строке, если это встроенная функция или функция или псевдоним, и если указанный вами файл имеет установленные разрешения.
Кроме того, он заботится о соответствующей строке #! (которая более формально известна как встроенная команда , совместимая с оригинальной оболочкой Bourne ), потому что, если у вас написан сценарий скрипта для C-оболочки, но у него нет соответствующей строки #! вверху, и вы пытаетесь запустить ее с помощью bash - оболочка попытается запустить ее, но она сломается из-за несовместимого синтаксиса.
В общем, Linux и Unix-подобные системы в основном заботятся о магических числах, которые вначале несколько байтов в файле, который идентифицирует тип файла.
Из руководства bash:
Если имя не является ни функцией оболочки, ни встроенным, и не содержит косых черт, bash ищет каждый элемент PATH для каталога, содержащего исполняемый файл с этим именем.Это означает, что функции и встроенные команды оболочки имеют приоритет в первую очередь, а если их нет - он ищет команду в списке каталогов, указанных в переменной PATH.
То, с чем вы столкнулись, - это команда test, которая является встроенной командой, совместимой с оригинальной оболочкой Bourne в bash. Эта команда неактивна и используется для простой логики, арифметической оценки и оценки строк. Он используется в логических выражениях и если утверждения:
bash-4.3$ test 1 -le 2 && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if test 1 -le 2 ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Обратите внимание, что test и [ точно такие же:
bash-4.3$ [ 1 -le 2 ] && echo "1 is less that or equal to 2"
1 is less that or equal to 2
bash-4.3$ if [ 1 -le 2 ] ; then echo "1 is less than or equal to 2"; fi
1 is less than or equal to 2
Существует также /usr/bin/test стандартные утилиты и существуют для мобильности и совместимости. Если в вашей оболочке не было test, он просмотрел переменную PATH, и если /usr/bin/ оказался до вашего ~/bin в списке - он запустил бы /usr/bin/test. Вот пример этого:
bash-4.3$ enable -n test
bash-4.3$ PATH="$HOME/bin/:$PATH" test
I am ~/bin/test
Используя команду enable -n, мы отключим встроенный test и временно запустим test с измененным PATH, таким образом, мой ~/bin первый в списке. Оболочка просматривает список и находит мой сценарий оболочки ~/bin/test и запускает его.
ПРИМЕЧАНИЕ: пожалуйста, не делайте этого! Вышеприведенный пример предназначен только для демонстрации! Это не лучший способ запускать ваши скрипты и не рекомендуется. Используйте соответствующее имя, никогда не называйте свои команды такими же, как встроенные оболочки или существующие утилиты. Вы были предупреждены.
Что случилось в вашем случае test.sh, так это то, что нет встроенного или функций, называемых test.sh, и поэтому оболочка просмотрел каждый каталог в списке PATH, пока он не нашел ваш файл test.sh и не запустил его. Вот почему это работает.
No. Это не имеет никакого отношения к расширениям файлов, и на самом деле для большинства файлов расширение не имеет значения. Shell заботится о расположении того, что вы вводите в командной строке, если это встроенная функция или функция или псевдоним, и если указанный вами файл имеет установленные разрешения.
Кроме того, он заботится о соответствующей строке #! (которая более формально известна как встроенная команда , совместимая с оригинальной оболочкой Bourne ), потому что, если у вас написан сценарий скрипта для C-оболочки, но у него нет соответствующей строки #! вверху, и вы пытаетесь запустить ее с помощью bash - оболочка попытается запустить ее, но она сломается из-за несовместимого синтаксиса.
В общем, Linux и Unix-подобные системы в основном заботятся о магических числах, которые вначале несколько байтов в файле, который идентифицирует тип файла.