Linux shell 脚本获取当前路径

哈,这事儿我上周帮隔壁组调试脚本时碰到过。
你说的没错,用 pwd 获取当前绝对路径确实最简单直接。

比如我有个脚本叫 check_files.sh,想记录它自己在哪儿运行,就写:
bash current_path=$(pwd) echo "脚本运行在 $current_path"
执行完 ./check_files.sh,终端就会打印出 /home/user/project 这种绝对路径,特别清晰。

但你说到相对路径,这倒是经常让人踩坑。
上次有个新人写了个清理临时文件的脚本,结果不管在哪跑,都试图删除 /tmp 下的文件,搞了半天才发现问题。

用 $0 获取脚本位置是个好习惯,虽然它返回的是脚本文件本身的完整路径。
你要是想知道脚本所在的目录,可以这么写:
bash script_dir=$(dirname "$0") echo "脚本目录在 $script_dir"
这个 dirname 命令就能把 /home/user/project/check_files.sh 变成 /home/user/project。
这样就能知道脚本相对于谁的位置了。

不过要注意 $0 有个怪癖,如果脚本是从软链接执行的,它返回的就是软链接的路径,不是脚本的真实位置。
这种情况下可以用这个方法更靠谱:
bash script_dir=$(dirname "$(readlink -f "$0")")
readlink -f 能把软链接解析成真实路径。
不过这命令不是所有系统都带,得注意。

反正获取路径这事儿,绝对路径用 pwd 就行,想搞清楚脚本自己的家在哪儿,用 $0 加 dirname 或者 readlink -f。
具体用哪个看你需求,我一般都把绝对路径存个变量,相对路径再单独算一个。

linux怎样显示当前目录

说实话,在Linux里看当前目录,我最常用的是pwd命令。
那天我在服务器上改文件,手滑敲了ls -l,结果发现路径就糊在命令提示符后面,得自己眼睛尖才能瞅见,当时还挺懵的。
不过用惯了命令行,pwd那一下就出来了,像/home/user/project这种长路径,直接显示,不用记笔记多省事。

有意思的是echo $PWD这个方法。
我之前写个自动化备份脚本,想动态加路径,就用了这个。
当时看文档说环境变量会自动更新,结果在一个挂载的NAS目录下测试时,发现$PWD没跟着变,当时也没想明白为啥,后来查了才知是权限问题。
这说明用环境变量得注意环境,不是万能的。

图形界面那边,我同事老用Nautilus。
他跟我说,在桌面直接拖文件,系统会自动把路径填对,省得他老是记错。
不过我更喜欢终端,至少知道哪个盘符是哪个,终端里一目了然。
他倒是觉得命令行太绕,我琢磨着可能真得看个人习惯。

数据我记得是大概十年前,中国用GNOME和KDE的桌面用户占5 0%左右,不过现在年轻码农可能更倾向纯粹命令行了。
这块我没亲自跑过,数据我记得是X左右,但建议你核实。
反正我现在的习惯是,如果是临时看,直接alt+F2 输入nautilus就行;真要干活,还是终端效率高。

linux如何查看命令的文件夹

昨天在朋友那台老机器上装软件,装到一半提示找不到某个依赖命令,我顺手敲了句 which node,结果屏幕上直接弹 /usr/bin/node。
朋友瞪大眼睛,说:“哇,你怎么知道的?” 我说:“嗨,这玩意儿太老了,估计没装 Node.js。
” 果然,用 which 没反应,我就让他 sudo apt update 一下,然后 locate node 就出来了,指向 /usr/local/bin/node。
后来发现 /usr/local/bin 不在 PATH 里,所以 which 找不到。

等等,我忘了说,上次在公司服务器上搞 Python 虚拟环境出问题,脚本里写的是 python manage.py runserver,结果一直报错找不到命令。
我顺手 which python,发现是 /usr/bin/python3 ,但我的项目用的是虚拟环境里的 python。
当时我就没多想,直接 cd 到虚拟环境目录,然后 which python,这才对上。
这让我想起,有时候 which 确实是个好帮手,但前提是得知道它在哪。

最搞笑的是有一次,我装完 Docker 后,想确认是不是装好了,就敲 which docker。
结果屏幕上回 /usr/bin/docker。
我愣了一下,心想这玩意儿装哪儿了?后来查了文档才知道,Docker 的可执行文件位置可能因发行版和安装方式不同而变化。
所以有时候 which 给出的结果,还得自己再确认一下。

突然想到,以前在 Solaris 系统上,他们用 whereis 命令,感觉比 which 还好用。
不过现在都用 Linux 了,这个命令估计早就被淘汰了。
说到底,这些命令都是工具,关键还得看你怎么用。
有时候 which 找不到,可能只是路径问题,不一定真没装。
比如在容器里装软件,有时候 /bin/sh 都可能不在 /bin 目录下,得看具体的文件系统配置。

比如这个 locate 命令,它得先更新数据库才能搜到新装的软件,这要是系统里装了成百上千个包,每次装完都要跑 updatedb,也挺烦人的。
所以有时候我宁愿用 find 命令直接搜,虽然慢点,但至少不用管什么数据库。
不过 find 的搜索条件也得会写,不然搜半天也搜不到。

说到底,这些命令都是工具,关键还得看你怎么用。
有时候 which 找不到,可能只是路径问题,不一定真没装。
比如在容器里装软件,有时候 /bin/sh 都可能不在 /bin 目录下,得看具体的文件系统配置。

LINUX怎么查看当前所在目录_LINUX查看当前路径的命令pwd详解

Linux中用pwd命令显示当前目录绝对路径。
pwd就是打印当前工作目录,直接输入pwd回车就行。
例:输入pwd,输出类似/home/user。

环境变量$PWD也能显示路径。
echo$PWD是直接读内存里的路径变量,比pwd快。
例:echo$PWD,输出和pwd一样。

脚本里用pwd看执行目录。
脚本内容:echo"路径是"$(pwd)。
例:test.sh脚本运行时,pwd显示的是执行时目录,不是脚本文件目录。

符号链接默认解析。
pwd会显示真实路径,不用加-P。
例:/home/user软链接到/var/home/user,pwd直接输出/var/home/user。

权限问题会报错。
pwd出错可能是目录被删或没权限。
例:pwd: error retrieving current directory,检查下目录或权限。

你自己掂量。