В настоящее время я нахожусь в поисках инструментальной цепочки кросс-компилятора MIPS, работающей в WSL, доступной через CLion.
У меня странная проблема с WSL. Я добавил в .bashrc следующее:
STAGING_DIR = "/home/max/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16"
export STAGING_DIR
К тому же у меня есть скрипт test.sh
#!/bin/sh
echo "Staging dir is: " $STAGING_DIR
При использовании wsl для получения оболочки и выполнения сценария вывод будет следующим:
max@DESKTOP-ISH7UJQ:/mnt/c/Users/Maxi$ ./test.sh
Staging dir is: /home/max/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16
При использовании wsl <command> для выполнения команды bash в WSL вывод отличается. Переменная окружения просто исчезла.
C:\Users\Maxi>wsl ./test.sh
Staging dir is:
Кажется, что .bashrc (я тоже пробовал .profile) не запускается при запуске через wsl? `
Это проблема, потому что, когда CLion вызывает подсистему WSL для создания моего проекта C++ с использованием CMake, компилятор жалуется, что этой переменной среды нет.
Когда я вручную получаю оболочку и выполняю команду точно так же cmake, компиляция работает без предупреждений, так как переменная среды присутствует.
Внутри CLion:
/usr/bin/cmake --build /mnt/c/Users/Maxi/CLionProjects/linux_wsl_test/cmake-build-debug-wsl_omega --target all -- -j 2
Scanning dependencies of target linux_wsl_test
[ 50%] Building CXX object CMakeFiles/linux_wsl_test.dir/main.cpp.o
mipsel-openwrt-linux-g++: warning: environment variable 'STAGING_DIR' not defined
[100%] Linking CXX executable linux_wsl_test
mipsel-openwrt-linux-g++: warning: environment variable 'STAGING_DIR' not defined
mipsel-openwrt-linux-g++: warning: environment variable 'STAGING_DIR' not defined
[100%] Built target linux_wsl_test
В оболочке WSL:
max@DESKTOP-ISH7UJQ:~/build_dir$ /usr/bin/cmake --build /mnt/c/Users/Maxi/CLionProjects/linux_wsl_test/cmake-build-debug-wsl_omega --target all -- -j 2
[ 50%] Building CXX object CMakeFiles/linux_wsl_test.dir/main.cpp.o
[100%] Linking CXX executable linux_wsl_test
[100%] Built target linux_wsl_test
Что тут происходит?
@Biswapriyo дает тот же пустой результат: bash.exe -c "./test.sh" Staging dir is:





Файл ~ / .bashrc загружается только интерактивными оболочками. Когда вы запускаете свой сценарий таким образом, он обрабатывается неинтерактивной оболочкой. Вы можете заставить его быть интерактивным, используя переключатель -i (хотя я не знаю, работает ли он с командой wsl). Или же поместите BASH_ENV=/home/max/.bashrc в свою среду перед запуском сценария.
bash.exe -i -c "./test.sh" дает Staging dir is: /home/max/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16. Это правильный путь. Я попробую ваше предложение сегодня же.
Добавление set(ENV{BASH_ENV} "/home/max/.bashrc") к моему CMakeList.txt решило проблему.
Попробуйте test.sh с
bash.exe.