# 常见问题

# 日常使用

...

# 开发相关

# 容器应用访问宿主机的其他应用

一般来说,可以使用ifconfig查询容器访问宿主机的ip地址,但mac os有点例外,查询不到这个ip地址,是以域名的形式访问,域名是 docker.for.mac.host.internal,这样的话,就能以域名+端口的方式,访问到其他应用了

# 编辑环境变量(使用zsh的情况)

  • 如果不知道自己使用的是什么shell脚本,可以在iterminal输入命令echo $SHELL查看
liuxiaoluxx ~: echo $SHELL
/bin/zsh
  • 若输出/bin/zsh,则确认使用的是zsh的shell
  • 编辑文件.zshrc,输入命令vi .zshrc
  • 文件内容比较多,若找不到要修改的配置参数,可以按/,然后输入想要查找的参数,回车即可
  • 编辑完成之后,输入:wq退出文件,然后输入source .zshrc让修改生效

# mac出现No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

网上有很多方案,大多数是针对IDE的,对我来说都不行,所以这个方案可以视为一个其他方案的补充方案

  • 打开maven安装地址的bin目录,我这里是/usr/local/Cellar/maven/3.6.3/bin

  • 找到mvn文件,修改第一行的JAVA_HOME为指定的地址

// 修改之前
liuxiaoluxx /usr/local/Cellar/maven/3.6.3/bin: cat mvn
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home)}" exec "/usr/local/Cellar/maven/3.6.3/libexec/bin/mvn" "$@"

// 修改之后
liuxiaoluxx /usr/local/Cellar/maven/3.6.3/bin: cat mvn
#!/bin/bash
      JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home" exec "/usr/local/Cellar/maven/3.6.3/libexec/bin/mvn" "$@"
    
  • 问题分析 可能是安装过多个版本的jdk导致的,之前应该是一个软链接,现在改成了指定的地址。不清楚如果升级jdk,这里会不会动态升级。不管怎样,问题解决就很开心啊。

# Linux:readonly option is set (add ! to override)错误

通常有三种情况:

  • 该错误为当前用户没有权限对文件作修改,这种情况可以强制退出:q!,先取得root权限后进行修改(root的权限取得命令是:su root然后输入你的登录密码即可)
  • 该文件没有正确保存退出,正在打开状态,请别人关闭后再保存
  • 若该文件所有人都关闭了,提示有的人没有关闭,则删除该文件的临时文件则可以正常打开、修改、保存;有文件未关闭的显示:

解决步骤:

  • 按Esc
  • 输入:wq!

# 更新Mac Bug Sur系统之后出现软件打不开的情况

你需要先安装 command line tool,以前安装过的如果更新了系统可能会失效,需要安装新的。安装按这篇教程 (opens new window)操作

安装完成后,打开终端,对软件进行签名即可:sudo codesign --force --deep --sign - /Applications/{appName}.app

ps: 请将{appName}.app 替换为你需要签名的app名称

# 保存SSH连接信息

  1. 找到iterm2 -> Preferences -> Profiles,添加一个profile

  2. 设定profile名称

  3. 设置profile快捷键

  4. 选择command -> Login Shell,设置命令expect 脚本文件 sshsave

  5. 脚本文件内容如下

#!/usr/bin/expect -f

# 将下面信息设定为你的服务器连接信息
set user     root
set host     xxx
set port     xxx
set password xxx
set rsa      xxx
set timeout -1

# 如果是密码的方式,去掉 -i $rsa 即可
spawn ssh -i $rsa -p $port -o StrictHostKeyChecking=no $user@$host
# 在跳出输密码提示的时候,发送密码,跳过输密码的步骤
# expect用来匹配输密码时的提示,如果不是密钥是密码的方式,将下面一行的内容替换为expect "*password*"即可
expect "*Enter passphrase for key*"
send "$password\r"
interact
expect eof
  1. 保存之后,使用快捷键就能直接连接服务器啦,比如我这个,使用cmd+option+9就能快捷访问服务器了
Last Updated: 6/26/2022, 4:44:06 PM