我了解交互式 shell 和非交互式 shell 之间的基本区别。但是,登录 shell 与非登录 shell 的确切区别是什么?
你能举例说明非登录交互式shell 的使用吗?
问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。
我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。
我有一个 bash 脚本,它在 cron 作业中每晚运行。它需要做不区分大小写的文件匹配,所以脚本调用
shopt -s nocaseglob
Run Code Online (Sandbox Code Playgroud)
我想确保这不会影响其他 cron 脚本。在此脚本结束后,此设置是否仍然存在?还是仅在脚本运行期间启用此设置?
谢谢!
我有一个设备/var/iot/data,我试图在其中远程获取数据。
在机器本身上:
# cat /var/iot/data | xxd -ps -c 32
80de004a030270055678013ac591e5c6abac2185f4319c8088e3
Run Code Online (Sandbox Code Playgroud)
那是正确的数据。
如果我远程运行相同的东西,它看起来是正确的:
$ ssh -T -x dragino 'cat /var/iot/data | xxd -ps -c 32'
80de004a030270055678013ac591e5c6abac2185f4319c8088e3
Run Code Online (Sandbox Code Playgroud)
但它实际上带有一堆转义序列:
$ ssh -T -x dragino 'cat /var/iot/data | xxd -ps -c 32' | xxd
00000000: 1b5d 3131 3b23 3138 3464 3666 0738 3064 .]11;#184d6f.80d
00000010: 6530 3034 6130 3330 3237 3030 3535 3637 e004a03027005567
00000020: 3830 3133 6163 3539 3165 3563 3661 6261 8013ac591e5c6aba
00000030: 6332 3138 3566 3433 3139 6338 …Run Code Online (Sandbox Code Playgroud) 我最近:在 /etc/passwd 中为用户指定了一个主目录路径,其中包含空格?但是现在.bashrc当我打开 Ubuntu 16.04 LTS WSL 窗口时,我的源无法正确获取,所以我必须source手动进行...它适用于source ~/.bashrc,但奇怪的是不适用于source $HOME/.bashrc,但奇怪的是适用于source "$HOME"/.bashrc.
因此,Jeff在上一个问题上认为,问题可能在于其他东西在采购它时没有引用它。
事实上,一个类似的问题导致我fork git hub 项目,其中发生了类似的错误;我认为这是因为我在 Windows 上使用了 mingw64/git-bash,但这根本不是问题,因为现在它发生在 WSL 中......至少我认为是这样......