Поскольку Windows 10 по-прежнему не предоставляет эту функцию (и не выполняет перетаскивание в .sh) по умолчанию, я решил создать раздел реестра, который будет делать это;
Вы сможете правильно открыть файл .sh, связав его с bash.exe; Кроме того, вы можете перетащить файлы в сценарий .sh, чтобы передать их в качестве параметров.
Вы можете скачать ключ здесь:
http://www.mediafire.com/file/8lqd1v693uj1g6t/ShellBashScriptOpen_v7.rar
Клавиша также позволяет запускать скрипт в режиме повышенных прав (опция правой кнопки мыши - как для администратора Windows, так и для суперпользователя Linux), а дополнительная (необязательная) клавиша позволяет щелкнуть правой кнопкой мыши> изменить с помощью nano.
Помните, что вы должны установить bash.exe в качестве программы по умолчанию, чтобы открывать файлы .sh для применения этих изменений (путь к исполняемому файлу C:/Windows/System32/bash.exe)
Основной раздел реестра выполняет следующий сценарий (будучи ключом reg, помните, что \ "становится", \ $ становится $, \\ становится \ и %% становится%):
#This makes bash.exe silently execute the command between quotes (whole code)
"%SYSTEMROOT%\System32\bash.exe" -c "
#Parses the dragged file paths from Windows paths to unix paths
path_param=\$(echo \"%*\" | sed 's/[[:space:]]\\([A-Z]:\\)/\\n\\1/g' | sed 's/[A-Z]:/\\/mnt\\/\\L&/g' | tr '\\\\' '\\/'\');
mapfile -t path_param <<< \"\$path_param\";
path_param=(\"\${path_param[@]//:}\");
#Same, but with the .sh script path
path_exec=\$(echo \"%l\" | sed 's/[[:space:]]\\([A-Z]:\\)/\\n\\1/g' | sed 's/[A-Z]:/\\/mnt\\/\\L&/g' | tr '\\\\' '\\/'\');
path_exec=\"\${path_exec//:}\";
#Removes the wole path (leaving only the file name) if the parameters are in the same directory of the script
if [[ \"\${path_param%%\\/*}\" -ef \"\${path_exec%%\\/*}\" ]];
then path_param=(\"\${path_param[@]/#\${path_param%%\\/*}\\/}\");
fi;
#Sets working directory to the folder where the script is located
cd \"\${path_exec%%\\/*}\";
#Executes script with or without parameters
if [[ \$path_param == \"\" ]];
then \"\$path_exec\";
else \"\$path_exec\" \"\${path_param[@]/#\${path_exec%%\\/*}\\/}\";
fi;
#Leaves WSL console open after the .sh script finishes executing
cd ~; bash; "
ОРИГИНАЛЬНАЯ ПОЧТА: можно ли перетаскивать файлы в сценарий .sh с помощью Bash в Ubuntu в Windows или в подсистеме Windows для Linux (WSL)?