编辑 最后修改时间 2023/07/26 18:18
WSL-Linux子系统
win10环境下安装Linux子系统
适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL )是一个为在 Windows 10 和 Windows Server 2019 上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层.
提醒
Centos 方案请移步 WSL CentOS
安装
打开 Windows 10 应用商店 > 搜索 Linux > 选择 Ubuntu > 安装
安装完毕后需要启用WSL功能,否则启动会提示失败
#用管理员模式打开 PowerShell,执行命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启系统,进入Ubuntu,初次登录会初始化系统
切换默认登录用户, 在此目录下执行命令
PS C:\Windows\System32 Ubuntu config --default-user root
#完毕
配置中文显示
安装中文基础语言包
sudo apt install language-pack-zh-hans
开启中文locale支持,用vim打开locale.gen文件
sudo vim /etc/locale.gen
# 找到# zh_CN.UTF-8 UTF-8,将前面的#和空格删掉,按ESC,输入命令 :wq 保存退出
492 # zh_CN.GBK GBK
493 zh_CN.UTF-8 UTF-8 -- 这行
494 # zh_HK BIG5-HKSCS
495 # zh_HK.UTF-8 UTF-8
...
# 执行下面命令使其生效
sudo locale-gen
修改默认locale为中文
sudo vim /etc/default/locale
# 内容修改为LANG=zh_CN.utf8,保存退出
让vim支持中文
sudo vim /etc/vim/vimrc
# 在最后加入
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc
# 保存退出 重启一下wsl,vim就可以正确显示中文了。
汉化man手册
# 安装中文手册页(man命令)
sudo apt install manpages-zh
# 安装完成后使用man命令或者--help参数就可以显示汉语帮助了。
问题
WSL Ubuntu nginx访永远等待php问题
#此配置适用于Ubuntu WSL
#请添加此配置: fastcgi_buffering off;
示例:
//-------------------------------- begin
location ~ \.php$ {
proxy_set_header X-Forwarded-Proto $scheme;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_buffering off; # This must be here for WSL as of 11/28/2018
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "upload_max_filesize = 20M \n post_max_size=21M";
include /etc/nginx/fastcgi.conf;
}
//-------------------------------- end
一段shell脚本,放到Ubuntu上报错误: /bin/sh: 1: Syntax error: "(" unexpected
一段shell脚本,放到Ubuntu上报下面这个错误
/bin/sh: 1: Syntax error: "(" unexpected
原因:
兼容性问题,因为linux将sh默认指向了dash,而不是bash
解决:
#执行下面命令, 选择 <No>
dpkg-reconfigure dash
Removing 'diversion of /bin/sh to /bin/sh.distrib by dash'
Adding 'diversion of /bin/sh to /bin/sh.distrib by bash'
Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash'
Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash'