相关疑难解决方法(0)

登录 Shell 和非登录 Shell 的区别?

我了解交互式 shell 和非交互式 shell 之间的基本区别。但是,登录 shell 与非登录 shell 的确切区别是什么?

你能举例说明非登录交互式shell 的使用吗?

shell login

435
推荐指数
7
解决办法
25万
查看次数

设置环境变量的最佳发行版/外壳不可知方式是什么?

问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。

我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。

shell login environment-variables

35
推荐指数
1
解决办法
7171
查看次数

cron 脚本中 shopt 选项的范围

我有一个 bash 脚本,它在 cron 作业中每晚运行。它需要做不区分大小写的文件匹配,所以脚本调用

shopt -s nocaseglob
Run Code Online (Sandbox Code Playgroud)

我想确保这不会影响其他 cron 脚本。在此脚本结束后,此设置是否仍然存在?还是仅在脚本运行期间启用此设置?

谢谢!

bash cron shopt

5
推荐指数
1
解决办法
1130
查看次数

为什么通过 ssh 处理文件会导致控制字符?

我有一个设备/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)

shell ssh terminal

5
推荐指数
1
解决办法
732
查看次数

如果 $HOME 包含空格,则不会在 WSL 上读取 .bashrc

我最近:在 /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 中......至少我认为是这样......

bash quoting home windows-subsystem-for-linux

0
推荐指数
1
解决办法
1577
查看次数