更正 ~/.profile 文件中的路径设置

更正 ~/.profile 文件中的路径设置

其中有一行~/.profile

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

我不太确定最后一个i

  • 我应该将其删除吗?
  • 这不是语法错误吗??

答案1

不,这不是语法错误;它只是一个在扩展后附加的字母$PATH,因为 shell 删除了引号......

$ PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
$ echo $PATH
/home/zanna/bin:/home/zanna/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bini

因此,除了添加本地目录之外,它还有效地/snap/bin从我的 PATH 中删除了现有的目录,并添加了不存在的目录/snap/bini

您可以删除i来​​修复您的 PATH。

要查看更改,您需要注销并重新登录,或者source ~/.profile在您使用的任何 shell 中运行(或使用 启动 shell bash -l),因为.profile读取者是登录 shell仅有的。

如果你没有自己做出此更改.profile,你可能需要通过运行来恢复默认文件

mv ~/.profile{,.old}
cp /etc/skel/.profile ~/.profile

这将重命名旧文件.profile .profile.old(如果您愿意,也可以删除该文件)并将其替换为系统的默认版本/etc/skel

答案2

我认为以下表达的含义不清楚:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

第一部分PATH=意味着我们为(环境)变量分配一个新值$PATH

第二部分是该变量的新值。在当前情况下,变量$HOME将使用其当前值进行扩展,并将字符串 附加到该值/bin:。字符串 的下一部分也是如此$HOME/.local/bin:。最后,将扩展并附加变量的当前(上一个)值$PATH。冒号:在表达式中起分隔符的作用PATH

最终目标是写:PATH=<some additional paths>+<the the current value of $PATH>。我们将这些额外的路径放在字符串前面,因为我们希望 shell 首先在这些位置搜索可执行文件,然后才在系统范围内搜索。

该字符i是不必要的。它将被附加到新的值中,$PATH并会造成混乱,正如@Zanna 在她的回答

答案3

是的,这是一个语法错误,除非你改变了一些东西,否则实际.profile应该是这样的(这是 17.10 版本,请参阅下面的注释):

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

在旧版本的 Ubuntu 中,这可能看起来有所不同,因为其中未将检查用户bin目录是否存在的功能包含在内.profile。检查它应该是什么样子的最简单方法是查看/etc/skel/.profile

因此,按照您在评论中所要求的那样,只需将其放在您的配置文件的末尾即可:

# Manual addition for swift development snapshot
export PATH="$PATH:/home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"

如果您将您的个人资料弄乱了,您可以从 中获得一份新的副本/etc/skel/

相关内容