Bash в Ubuntu WSL требует перезагрузки для инициализации pyenv

Попробуйте это,

awk '$NF~/CSV$/ {print $NF}'  file
  • извлекает строки, заканчивающиеся на CSV, и печатает последнее поле
2
27.09.2020, 08:13
2 ответа

Существуют различные способы вызова оболочки. Когда вы входите в систему либо с помощью эмулятора терминала (, например, при запуске WSL ), либо через SSH, такая оболочка называется оболочкой входа в систему. Любая оболочка, которую вы запускаете и в которую вводите команды, независимо от того, является ли она также оболочкой входа в систему, называется интерактивной оболочкой. Не интерактивная оболочка -— это любая оболочка, которая используется для написания сценариев или иным образом, когда вы не вводите в нее команды.

Когда вы запускаете WSL, это интерактивная оболочка входа, но когда вы запускаете exec bashили exec $SHELL, это не -интерактивная оболочка входа. Я подозреваю, что вы увидите ту же проблему, если вы запустите exec $SHELL -lсразу после запуска WSL, который запускает оболочку входа вместо интерактивной оболочки без входа -.

В bash ~/.bashrcне читается для оболочек входа, которые не поступают из SSH; Вместо этого читается ~/.bash_profile. Поскольку вы не хотите повторять свою конфигурацию, обычно ~/.bash_profileчитается как ~/.bashrc, добавляя в нее что-то вроде этого:

# include.bashrc if it exists
if [ -f ~/.bashrc ]; then
   . ~/.bashrc
fi

Это сделает ваш ~/.bashrcпрочитанным при первом запуске WSL, и ваш код virtualenv должен работать как обычно.

0
18.03.2021, 23:02

У меня была другая проблема, которая также требовала перезапуска WSL2, чтобы все заработало.

Решение заключалось в отключении быстрого запуска Windows.

По-видимому, иногда при быстром запуске инициализировался WSL (default)вместоWSL2

Вы можете отключить его в «Параметры электропитания» > «Выберите, что делают кнопки питания» > «Настройки выключения» > «Включить при быстром запуске"

0
18.03.2021, 23:02

Теги

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