所以我想创建一个可移植的bashrc / bash_profile文件。我有一个单独的脚本,我象征性地链接到.bashrc,.bash_profile等。然后我看$0
并根据调用的脚本切换我做的事情。问题是shell调用bashrc脚本当然它执行bash真的意味着$0
对我来说是-bash
。 $1
更多未设置为脚本名称。
所以我的问题是,在bash中如何获取正在执行的脚本的名称。不是执行它的二进制文件,例如的bash?
我认为它为-bash
提供了$1
未设置,因为它实际上不是一个新进程。有什么想法吗?
答案 0 :(得分:28)
尝试:
readlink -f ${BASH_SOURCE[0]}
或只是:
${BASH_SOURCE[0]}
。
说明:
$0
仅在用户执行“./script.sh”
$BASH_ARGV
仅在用户执行“.script.sh”或“source script.sh”时才有效
${BASH_SOURCE[0]}
适用于这两种情况。
readlink -f
在使用符号链接时很有用。
答案 1 :(得分:2)
变量BASH_ARGV
应该有效,脚本显示为being sourced
$BASH_ARGV
答案 2 :(得分:0)
创建 .sh 文件让我们说 view.sh 然后放入
#!/bin/bash
echo "The script is being executed..."
readlink -f ${BASH_SOURCE[0]}