我用的是xubuntu仿生学中的shell bash。
我将尝试将用户的$PATH扩展到$HOME/..profile。
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi结果有点出乎意料。
echo $PATH
/home/alex/.local/bin:/home/alex/bin:/home/alex/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games$HOME/bin设置两次。我怎么才能避免呢?
在$HOME/..bashrc中没有声明任何内容。
发布于 2019-08-29 15:41:29
我使用Stephen的"Bash路径函数“(参见他在Linux中的文章斯蒂芬·科莱尔的文章 )。它允许我在shell编程中使用“冒号分隔列表”作为数据类型。例如,我可以通过以下方法生成当前目录中所有目录的列表:
dirs="";for i in * ; do if [ -d $i ] ; then addpath -p dirs $i; fi; done 然后,listpath -p dirs生成一个列表。
使用uniqpath和listpath (来自bash_path_funcs),您可以简单地:
walt@bat:~(0)$ PATH=$HOME/bin:$PATH
+walt@bat:~(0)$ listpath
/home/walt/bin
/home/walt/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
/home/walt/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
+walt@bat:~(0)$ uniqpath -p PATH
+walt@bat:~(0)$ listpath
/home/walt/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/gameswalt@bat:~(0)$ PATH=$HOME/bin:$PATH发布于 2019-08-29 15:21:40
Ubuntu已经配置为自动将$HOME/bin添加到路径中。
您刚才提到您的发行版已被服务器转换为桌面,我不知道这是如何影响事情的,但是您可以检查:
$ cat ~/.profile
# ~/.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 directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"这听起来像是正在执行,而您正在手动执行的是在文件的最后一行上加倍。
grep查找所有引用可以使用grep查找引用$HOME/bin的所有文件:
grep -rnw --exclude-dir={proc,root,run,sys,/tmp,tmpfs,var} '/' -e "$HOME/bin"https://askubuntu.com/questions/1169388
复制相似问题