bashrc 和导出变量
bashrc and export variables
我正在添加一个变量,每次我 运行 一个终端 window 时我都希望导出该变量。问题是它指向了一个不是此时创建的文件或目录。但是我希望 bash 加载和导出变量,因为当我使用它时 file/folder 会在那里。
变量
export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/initial.nmap | sed 's/,$//')
export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/full.nmap | sed 's/,$//')
错误信息:
awk: cmd. line:1: fatal: cannot open file `nmap/initial.nmap' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file `nmap/full.nmap' for reading (No such file or directory)
有什么方法可以通过 bashrc 来完成这项工作,还是我要创建一个别名来导出我想要的每个终端会话的变量?
感谢您抽出时间。
只需将以下功能添加到您的.bashrc
。
set_ports () {
awk 'F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' "" | sed 's/,$//'
}
所需文件可用后,您可以运行
ports=$(set_ports nmap/initial.nmap)
portsf=$(set_ports nmap/full.nmap)
export ports ports
如果您实际上不需要导出变量(我怀疑是这种情况),则可以省略最后一行。
您还可以检查 .bashrc 中的文件是否存在,只有存在时才执行 exports 命令。
这样的事情应该有效:
[ -f nmap/initial.nmap ] && export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/initial.nmap | sed 's/,$//')
[ -f nmap/full.nmap ] && export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/full.nmap | sed 's/,$//')
仅当'&&'之前的内容以退出代码0退出时,才会评估'&&'之后的内容。具体来说,例如第一行,如果文件'nmap/initial.nmap'存在,你确实会导出 'ports' 变量而不是其他变量。
我正在添加一个变量,每次我 运行 一个终端 window 时我都希望导出该变量。问题是它指向了一个不是此时创建的文件或目录。但是我希望 bash 加载和导出变量,因为当我使用它时 file/folder 会在那里。
变量
export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/initial.nmap | sed 's/,$//')
export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/full.nmap | sed 's/,$//')
错误信息:
awk: cmd. line:1: fatal: cannot open file `nmap/initial.nmap' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file `nmap/full.nmap' for reading (No such file or directory)
有什么方法可以通过 bashrc 来完成这项工作,还是我要创建一个别名来导出我想要的每个终端会话的变量?
感谢您抽出时间。
只需将以下功能添加到您的.bashrc
。
set_ports () {
awk 'F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' "" | sed 's/,$//'
}
所需文件可用后,您可以运行
ports=$(set_ports nmap/initial.nmap)
portsf=$(set_ports nmap/full.nmap)
export ports ports
如果您实际上不需要导出变量(我怀疑是这种情况),则可以省略最后一行。
您还可以检查 .bashrc 中的文件是否存在,只有存在时才执行 exports 命令。 这样的事情应该有效:
[ -f nmap/initial.nmap ] && export ports=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/initial.nmap | sed 's/,$//')
[ -f nmap/full.nmap ] && export portsf=$(awk -F "/" 'BEGIN {ORS=","} /\/tcp/ {print }' nmap/full.nmap | sed 's/,$//')
仅当'&&'之前的内容以退出代码0退出时,才会评估'&&'之后的内容。具体来说,例如第一行,如果文件'nmap/initial.nmap'存在,你确实会导出 'ports' 变量而不是其他变量。