今天我注意到我的路径最后有一个条目 No such file or directory
,这导致了其他问题。
我的路径是这样的: /home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
我不知道是什么添加了它,想知道如何解决它。
我检查了一下.bashrc
,没有发现任何问题。在.bashrc
如预期增加了蟒蛇和Ruby。
基于这个关于如何设置 PATH 的很好的答案,我检查了我的~/.profile
文件。配置文件脚本只是执行的.bashrc,并添加$HOME/bin
和$HOME/.local/bin
的路径。这些路径仅在它们存在时才添加,并且它们确实存在。
我阅读了我能理解的内容man login
。这让我去检查/etc/login.defs
,但这看起来很普通。我没有登录帮助中提到的任何其他文件。
任何想法如何解决发生这种情况的地方?
根据评论,我编辑了问题,说我已经检查了~.profile
.
我还制作了一个非常简单的~.bashrc
bash版本,重新启动并使用调试命令运行 bash。将PATH
仍然是损坏的。
geneorama@computer:~$ bash -x ~/.bashrc
+ HISTCONTROL=ignoreboth
+ shopt -s histappend
+ HISTSIZE=9999999
+ HISTFILESIZE=999999999
+ shopt -s checkwinsize
geneorama@computer:~$ $PATH
bash: /home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
我还注意到我无法通过手动设置路径或以 root 身份登录来修复错误。我尝试使用export
带引号的字符串来使用和设置路径(我不知道它是否重要或最好的方法)。
geneorama@computer:~$ $PATH
bash: /home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
geneorama@computer:~$ PATH="/home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
geneorama@computer:~$ $PATH
bash: /home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: No such file or directory
geneorama@computer:~$ sudo su -
[sudo] password for geneorama:
root@ativ4-v18:~# $PATH
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
root@ativ4-v18:~# logout
geneorama@computer:~$ export PATH=/home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
geneorama@computer:~$ $PATH
bash: /home/geneorama/gems/bin:/home/geneorama/anaconda3/bin:/home/geneorama/.local/bin:/home/geneorama/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: No such file or directory
还看了看/etc/environment/
和/etc/environment.d/
。第一个是空的,第二个有两个文件90atk-adaptor.conf
and 90qt-a11y.conf
,但它们似乎没有影响路径。
即使我手动将我的路径设置为 just/sbin
并且/bin
我收到错误。在这一点上,我不明白错误消息是真的在我的路径上还是与路径一起打印。
geneorama@computer:~$ export PATH=/sbin:/bin
geneorama@computer:~$ $PATH
bash: /sbin:/bin: No such file or directory
最初我在 Jekyll 中遇到错误。一些网站说我的错误是由$PATH
. 当我(不正确地)打印我的时候,$PATH
我认为有什么东西试图添加我已经删除的路径。我以为我卸载了不正确的东西。
正在打印的空格是错误消息的一部分,而不是$PATH
.
显然 Jekyll 已损坏,解决方案是将apt remove
其重新安装。
在此过程中,我了解到 path 变量以许多非显而易见的方式进行了修改。我的问题的答案基本上是“正确打印您的 $PATH”。
有一天,有人可能会问“如何调试/配置对我的 $PATH 的编辑?”,并且有人可能会将其标记为重复。这不是这个问题的重复。这个问题原来是“我如何打印 $PATH”。
问题不在于您的PATH
,而在于您尝试显示它的方式。命令行中的第一件事是您正在运行的命令。如果您只输入$PATH
,shell 将尝试将您的PATH
作为命令运行,它不是命令——它是一个以冒号分隔的目录列表,用于在其中查找命令。由于该名称没有实际命令,因此您会收到错误消息. (并且由于它正在寻找与该命令对应的可执行文件,因此您得到的错误是“没有这样的文件或目录”)。
要正确显示 shell 变量的值PATH
,请使用 eg echo "$PATH"
(或者如果它可能包含反斜杠/转义符,请printf '%s\n' "$PATH"
改用)。有时您可以省略变量引用周围的双引号,但并非总是如此,因此养成双引号变量引用的习惯会更安全。我的意思是总是,不仅仅是在echo
命令中。有关更多解释,请参见此处、此处和此处。
对于PATH
具体而言,它往往更容易看到它,如果它分成不同的目录; 您可以使用该tr
命令将冒号分隔符转换为换行符。比较这两个例子:
$ echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
$ echo "$PATH" | tr ':' '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/local/games
/usr/games
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句