linux - 如何获取当前运行的 shell 脚本(cshell linux)的路径
问题描述
Linux/CSHELL:
如何获取正在获取的 tcsh 脚本的路径?
这不是 $PWD。而是脚本(文件)的路径。
版本/细节:
% echo $SHELL $PLATFORM
/tool/pandora/bin/tcsh linux_3.10.0_64
ls -l /tool/pandora/ bin/tcsh lrwxrwxrwx
1 潘多拉潘多拉 33 Oct 20 2016 /tool/pandora/bin/tcsh -> ../ .package/tcsh-6.19.00/bin/tcsh
对于这种类型的东西,这里有很多注释。但是我没有看到一个用于 linux c-shell 的。
提前致谢 !
例子:
我有一个文件 /home/myid/my_cshell.csh ...
set a = `readlink -f ${0}`
echo $a
echo ${0}
source /home/myid/my_cshell.csh
/tool/pandora/.package/tcsh-6.19.00/bin/tcsh
/tool/pandora/bin/tcsh
这给了我通向 tcsh 的路径,而不是 /home/myid/my_cshell.csh
如果我 tcsh 上面的脚本工作正常,但不是 source 它。我需要源文件的路径。
解决方案
假设您readlink
有空:
readlink -f "${0}"
应该管用。${0}
将为您提供相对路径,readlink -f
并将其解析为绝对路径。
必须已经有某种方法可以引用该文件...如果没有,首先如何获得它?所以我想问题是${0}
引用父文件系统的位置,而不是源文件。在这种情况下,readlink -f <file>
应该仍然可以工作,但也许先尝试调用它,然后在运行时传递结果source
。像这样:
main.csh:
#!/bin/csh
set p=`readlink -f source.csh`
source source.csh "${p}"
来源.csh:
#!/bin/csh
set pmain=`readlink -f "${0}"`
echo "my path is ${1}. main.csh's path is ${pmain}"
推荐阅读
- java - ClassCastException:类 java.lang.String 不能转换为类 SaleResponseFactory
- mysql - 如何在 OVER() 窗口中获取相邻值
- vba - VBA 转置代码需要在结果列中保持原始格式(字体大小、居中等)
- ios - Alamofire 请求失败,因为证书但在 Postman 上工作
- c++ - C++确定K是否可以表示为N的素数之和
- python - PyQt5 setPlaybackRate
- r - 在 R 中,使用变量名而不是列值来将列转换为二进制
- python - 水平对齐子图
- amazon-web-services - json:无法将对象解组为字符串类型的 Go 值” aws dynamodb
- sql - 我如何选择在巴黎所有酒店进行预订的每个人的 ID。甲骨文