我运行以下代码:
echo $$
# Output : 3911
true | while true; do
eval 'echo $$'
break
done
# Output : 3911
Run Code Online (Sandbox Code Playgroud)
文档说 while 循环(涉及管道)在子进程中运行,在这种情况下,两个进程 ID 是否应该不同?
我使用的是 Ubuntu 22.04.3 LTS(Jammy Jellyfish)。
$ ps -p 1635
PID TTY TIME CMD
$ kill -0 1635 ; echo $?
0
$ type kill
kill is a shell builtin
$ echo $BASH_VERSION
5.1.16(1)-release
$ mount|grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
Run Code Online (Sandbox Code Playgroud)
我希望kill -0能回来bash: kill: (1635) - No such process。
更新1
ps -eLf | awk 'NR == 1 || /1635/'
PID PPID LWP C NLWP STIME TTY TIME CMD
1632 1091 1635 0 9 13:07 ? …Run Code Online (Sandbox Code Playgroud) 当我尝试启动 chromium 时,出现错误消息:
$ chromium
X11 connection rejected because of wrong authentication.
[10139:10139:0321/173002.675673:ERROR:ozone_platform_x11.cc(234)] Missing X server or $DISPLAY
[10139:10139:0321/173002.675976:ERROR:env.cc(225)] The platform failed to initialize. Exiting.
$ echo $DISPLAY
localhost:10.0
$ xterm # xterm starts fine
Run Code Online (Sandbox Code Playgroud) 我可以使用外部命令realpath来获取文件的绝对路径:
realpath tmp/toto
Run Code Online (Sandbox Code Playgroud)
回报
/home/john/tmp/toto
Run Code Online (Sandbox Code Playgroud)
我可以使用bash内置函数来获得相同的效果吗?
# When I do just Shift-Insert, I get
~$ 2~
# When I do Ctrl-V, then Shift-Insert, I get
~$ ^[[2;2~
Run Code Online (Sandbox Code Playgroud)
Shift-insert 在其他情况下也能很好地工作,比如 Windows CMD 或 Git-Bash
在 wsl 中,我可以使用 Ctrl-Shift-V 进行粘贴,但更喜欢使用 shift-insert。
有什么解决办法吗?
我在 cygwin 环境的薄荷窗口中。
当我输入⎈ Ctrl+ Vthen↑键时,我得到了:^[[A
然后我 ssh 进入 Raspberry Pi,并立即退出。
现在我输入⎈ Ctrl+V然后↑键我得到:^[OA
~$ ^[[A
~$ ssh rasp
Last login: Tue Dec 24 12:08:16 2019 from 192.168.0.5
raspberrypi%
Connection to 192.168.0.12 closed.
~$ ^[OA
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解吗?