根据文件系统层次结构标准,该/bin目录应包含单用户模式所需的实用程序。在实践中,许多 Linux 发行版使目录成为指向/usr/bin. 同样,/sbin现在通常也是指向 / 的符号链接usr/bin。
符号链接背后的原理是什么?
我的系统(Debian 测试中的 Gnome 3)对当前时间感到困惑。当我运行时date,时间显示正确,但有些应用程序比时间晚了一个小时。例如,当我向 Gnome 日历添加一个事件时,日历约会中显示的事件时间将是我输入的时间减去一小时。
我发现了问题所在,但不知道如何解决:
$ date ; TZ=GMT date ; TZ=BST date
Sun 30 Apr 11:25:37 BST 2017
Sun 30 Apr 10:25:37 GMT 2017
Sun 30 Apr 10:25:37 BST 2017
Run Code Online (Sandbox Code Playgroud)
输出的前两行是正确的,第三行晚了一个小时。我不明白的是为什么 BST 时区似乎比一个小时晚了,而同时当前时间是正确的 - 并且使用 BST。
这也可能是相关的:
$ timedatectl status
Local time: Sun 2017-04-30 11:33:07 BST
Universal time: Sun 2017-04-30 10:33:07 UTC
RTC time: Sun 2017-04-30 10:33:07
Time zone: Europe/London (BST, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Run Code Online (Sandbox Code Playgroud)
编辑 …
我正在尝试创建一个 Bash 函数,为未设置的变量分配默认值。这是我的非工作脚本的简化示例:
#! /usr/bin/env bash
# My broken validation function
validate_input() {
if [ -z "$1" ]; then
set -- "default"
fi
}
# Parse arguments
while [ "$#" -gt 0 ]; do
case "$1" in
--foo=*)
foo="${1#*=}"
;;
--bar=*)
bar="${1#*=}"
;;
*)
printf '%s\n' "Invalid argument ($1)"
exit 1
;;
esac
shift
done
# Validate foo and bar
validate_input "$foo"
validate_input "$bar"
# Print results
printf '%s\n' "foo: $foo"
printf '%s\n' "bar: $bar"
Run Code Online (Sandbox Code Playgroud)
因此,用户可以使用参数--foo和--bar来设置变量 …