aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2017-11-14 10:15:17 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2017-11-14 10:15:17 +0000
commit6fd07539f028f6e79cb027bfcd26bcec27e68c9c (patch)
tree291e311a26508058b5d346f20629b19efc8d8614 /bin
parent5e8a39f6ab3b10452a67b2d746508cea1f735803 (diff)
downloadsrc-6fd07539f028f6e79cb027bfcd26bcec27e68c9c.tar.gz
src-6fd07539f028f6e79cb027bfcd26bcec27e68c9c.zip
Add a -r option to print the running kernel version.
MFC after: 1 week
Notes
Notes: svn path=/head/; revision=325800
Diffstat (limited to 'bin')
-rw-r--r--bin/freebsd-version/freebsd-version.119
-rw-r--r--bin/freebsd-version/freebsd-version.sh.in25
2 files changed, 30 insertions, 14 deletions
diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1
index a4247ff59f82..710bb23ac4c3 100644
--- a/bin/freebsd-version/freebsd-version.1
+++ b/bin/freebsd-version/freebsd-version.1
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 5, 2013
+.Dd November 14, 2017
.Dt FREEBSD-VERSION 1
.Os
.Sh NAME
@@ -33,7 +33,7 @@
.Nd print the version and patch level of the installed system
.Sh SYNOPSIS
.Nm
-.Op Fl ku
+.Op Fl kru
.Sh DESCRIPTION
The
.Nm
@@ -50,6 +50,11 @@ if a new kernel has been installed but the system has not yet
rebooted,
.Nm
will print the version and patch level of the new kernel.
+.It Fl r
+Print the version and patch level of the running kernel.
+Unlike
+.Xr uname 1 ,
+this is unaffected by environment variables.
.It Fl u
Print the version and patch level of the installed userland.
These are hardcoded into
@@ -57,14 +62,10 @@ These are hardcoded into
during the build.
.El
.Pp
-If both
-.Fl k
-and
-.Fl u
-are specified,
+If several of the above options are specified,
.Nm
-will print the kernel version first, then the userland version, on
-separate lines.
+will print the installed kernel version first, then the running kernel
+version, and finally the userland version, on separate lines.
If neither is specified, it will print the userland version only.
.Sh IMPLEMENTATION NOTES
The
diff --git a/bin/freebsd-version/freebsd-version.sh.in b/bin/freebsd-version/freebsd-version.sh.in
index 16034104d5cf..9541b86a2636 100644
--- a/bin/freebsd-version/freebsd-version.sh.in
+++ b/bin/freebsd-version/freebsd-version.sh.in
@@ -38,7 +38,7 @@ LOADER_RE1='^\([A-Z_a-z][0-9A-Z_a-z]*=[-./0-9A-Z_a-z]\{1,\}\).*$'
LOADER_RE2='^\([A-Z_a-z][0-9A-Z_a-z]*="[-./0-9A-Z_a-z]\{1,\}"\).*$'
KERNEL_RE='^@@TYPE@@ \([-.0-9A-Za-z]\{1,\}\) .*$'
-progname=$(basename $0)
+progname=${0##*/}
#
# Print an error message and exit.
@@ -71,6 +71,13 @@ kernel_version() {
}
#
+# Print the version of the currently running kernel.
+#
+running_version() {
+ sysctl -n kern.osrelease
+}
+
+#
# Print the hardcoded userland version.
#
userland_version() {
@@ -81,7 +88,7 @@ userland_version() {
# Print a usage string and exit.
#
usage() {
- echo "usage: $progname [-ku]" >&2
+ echo "usage: $progname [-kru]" >&2
exit 1
}
@@ -90,11 +97,14 @@ usage() {
#
main() {
# parse command-line arguments
- while getopts "ku" option ; do
+ while getopts "kru" option ; do
case $option in
k)
opt_k=1
;;
+ r)
+ opt_r=1
+ ;;
u)
opt_u=1
;;
@@ -108,15 +118,20 @@ main() {
fi
# default is -u
- if [ $((opt_k + opt_u)) -eq 0 ] ; then
+ if [ $((opt_k + opt_r + opt_u)) -eq 0 ] ; then
opt_u=1
fi
- # print kernel version
+ # print installed kernel version
if [ $opt_k ] ; then
kernel_version
fi
+ # print running kernel version
+ if [ $opt_r ] ; then
+ running_version
+ fi
+
# print userland version
if [ $opt_u ] ; then
userland_version