chsh не работает в win10 sub linux

Это довольно просто:

for fname in ./*.c; do
  if grep -q -F "printf" "$fname" && ! grep -q -F "#include <stdio.h>" "$fname"; then
     printf 'File "%s" needs to include stdio.h\n' "$fname"
  fi
done

Программа просмотрит все исходные файлы C в текущем каталоге и сообщит о любом файле, который использует printf() без включения stdio.h заголовка.

Однако заголовок может быть включен косвенно, поэтому, чтобы избежать ложных срабатываний, вы можете пропустить код через препроцессор C и искать заголовок в препроцессированном выводе (похоже, это работает с gcc и clang):

for fname in ./*.c; do
  if grep -q -F "printf" "$fname" && cc -E "$fname" | ! grep -q "^#.*stdio\.h\""; then
     printf 'File "%s" needs to include stdio.h\n' "$fname"
  fi
done
1
19.03.2017, 04:47
1 ответ

Когда они называют это «Bash в Ubuntu в Windows», они действительно имеют в виду именно это - ярлык просто запускает исполняемый файл Bash напрямую.

Если вы получите доступ к системе каким-либо другим способом (через SSH, или запустив login или диспетчер отображения), то он будет читать / etc / passwd как обычно.

Проще говоря, вы можете отредактировать свой .bashrc , чтобы подделать его. Добавить:

if [ -t 1 ]
then
   exec zsh
fi

в конец.

Вы также можете создавать новые ярлыки Windows (или изменять существующие), которые порождают что-то еще - bash.exe -c / usr / bin / zsh тоже должно работать достаточно хорошо.

Сообщается об этой ошибке . Я не думаю, что это высокий приоритет (и это не на самом деле ошибка), но любой из этих обходных путей поможет вам достаточно близко.

2
27.01.2020, 23:34

Теги

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