Linux declare命令 学习:
https://www.runoob.com/linux/linux-comm-declare.html
https://blog.csdn.net/yyywyr/article/details/50285251

Linux declare命令用于声明 shell 变量。
declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

+/-  "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
-f  仅显示函数。
r  将变量设置为只读。
x  指定的变量会成为环境变量,可供shell以外的程序来使用。
i  [设置值]可以是数值,字符串或运算式。

declare -r curr_dir=$(cd dirname $0; pwd) # 创建了一个只读的变量 curr_dir

1、dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。 语法:dirname [选项] 参数 ”

他这个命令就是跳转到当前的目录
[hadoop@dev-hadoop-test01 prometheus]$ pwd dirname $0
/home/hadoop/prometheus
[hadoop@dev-hadoop-test01 prometheus]$ cd ~
[hadoop@dev-hadoop-test01 ~]$ pwd dirname $0
/home/hadoop

[hadoop@dev-hadoop-test01 scripts]$ cat prometheus_server_start.sh # 他这个就是指定到当前的目录 下
#!/bin/bash

declare -r curr_dir=$(cd dirname $0; pwd)
echo $curr_dir

[hadoop@dev-hadoop-test01 scripts]$ sh prometheus_server_start.sh
/home/hadoop/scripts

2、basename命令用于打印目录或者文件的基本名称,显示最后的目录名或文件名。语法:basename [选项] 参数
https://blog.51cto.com/2937761/2090137

[root@liang ~]# basename /etc/httpd/conf/httpd.conf
httpd.conf
[hadoop@dev-hadoop-test01 prometheus]$ pwd
/home/hadoop/prometheus
[hadoop@dev-hadoop-test01 prometheus]$ basename prometheus.yml
prometheus.yml
[hadoop@dev-hadoop-test01 prometheus]$ basename /home/hadoop/prometheus/prometheus.yml
prometheus.yml