如何在~/.bashrc不重新启动 shell的情况下告诉 shell 重新读取?
我至少需要找到一个$JAVA_HOME定义(导出)的文件。除了在文件中搜索文本之外,还有什么聪明的方法可以做到这一点?
我想从 csh 切换到 bash,然后我必须使用我使用的命令设置 .bashrc。用参数翻译别名似乎并不像我相信的那样容易。csh:
alias gr 'xmgrace -legend load -nxy \!* -free -noask&'
Run Code Online (Sandbox Code Playgroud)
param\!*表示命令行中的所有参数;然后我尝试了 bash:
alias gr='xmgrace -legend load -nxy $@ -free -noask&'
alias gr='xmgrace -legend load -nxy $(@) -free -noask&'
Run Code Online (Sandbox Code Playgroud)
但都没有奏效。
另一个问题来自记住当前目录 csh:
alias t 'set t=\`pwd\``;echo $t'
alias tt 'cd $t'
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但没有任何结果。
下载 Eagle 7.6 后,我想为其添加别名。即使./eagle打开应用程序,bash eagle结果cannot execute binary file错误。我试过了,chmod +x eagle但没有帮助。下载的版本是64位版本。
我创建的别名如下:
alias eagle='bash /home/metin/eagle-7.6.0/bin/eagle'
Run Code Online (Sandbox Code Playgroud)
如果你想知道,这里是uname -a输出:
Linux mettinoktay 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC
2016 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我正在运行 Ubuntu 服务器 16.04,我通过 SSH 进入。
我正在寻找一种方法让 watch 命令监控多个事情但遇到问题。
我有一个工作功能可以监控我的 CPU 和 GPU 温度,如下所示。
temps() {
watch -d -n1 'sensors coretemp-isa-0000 nouveau-pci-0100'
}
Run Code Online (Sandbox Code Playgroud)
这给我这个输出效果很好。
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +35.0c
Core 1: +33.0c
Core 2: +33.0c
Core 3: +34.0c
nouveau-pci-0100
Adapter: PCI adapter
GPU core: +0.86 V
fan1: 780 RPM
Temp1: +41.0c
Power1: 13.26 W
Run Code Online (Sandbox Code Playgroud)
我也有这个功能可以监控 CPU MHz..
mhz() {
watch -d -n1 'cat /proc/cpuinfo | grep "MHz"'
}
Run Code Online (Sandbox Code Playgroud)
这本身也很好用,给我这个输出
cpu MHz :1600.001
cpu MHz :1600.001
cpu MHz :1600.001 …Run Code Online (Sandbox Code Playgroud) 我已经取得了一些剧本,我想在终端调用只有一个字(像其他传统的shell命令cd,ls等等)。
到目前为止,我发现我可以将脚本放入环境路径(bin目录)指向的目录之一,或者将脚本的目录添加到环境路径中。
显然,Ubuntu 建议不要修改任何bashrc文件。此外,这些bashrc文件似乎只调用了bash_aliases我猜的,更多的是用于别名。此外,我发现我可以更改所有用户的路径/etc/environment或在/etc/profile.d.
所以我想知道的是,创建一个只有一个用户和所有用户都可以访问的自定义命令的最佳实践是什么?(使用bin目录还是修改PATH?如果是后者,修改哪个文件?)
我~/.bash_aliases在这些行中创建了文件:
# my alias here
eclipse="eclipse</dev/null &>/dev/null &"
okular="okular</dev/null &>/dev/null &"
libre="libreoffice</dev/null &>/dev/null &"
Run Code Online (Sandbox Code Playgroud)
我~/.bashrc已准备好查找别名:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
然后我执行了. ~/.basharc,source .bashrc但我创建的别名仍然不起作用。
我检查了ls -al我的主目录,但在我的主目录中没有看到 .bashrc 文件。Ubuntu 18.04 发行说明没有提及这方面的任何内容。我在删除 .bash_、.local、.gnome 等文件后没有格式化以前的 /home 分区就安装了它。我可以像平常一样使用电脑,但是 bashrc 文件现在在哪里?不是应该自动重新创建吗?
让我们摆脱这个,我做了一些愚蠢的事情。是的,愚蠢。非常愚蠢。我很清楚这是多么愚蠢。我很尴尬,我后悔这样做了。请帮忙。我正在安装一个程序,同时也在看电视,并以某种方式设法从路径中删除了 /usr/bin。不!
我正在使用 ubuntu 16.04。我通过键入将新程序 bin 添加到路径:
sudo nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
添加了新路径,但随后我尝试使用 sudo 进行更新,但出现此错误:
The command could not be located because '/usr/bin' is not included in the PATH environment variable.
Run Code Online (Sandbox Code Playgroud)
但是,bin 仍然存在:
Command 'sudo' is available in '/usr/bin/sudo'
Run Code Online (Sandbox Code Playgroud)
nano 可用,ls 可用 - 全部可用 - 但不在路径中。所以,简单地尝试:
sudo nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
并尝试将 /usr/bin 添加到路径不是一种选择。没有 sudo 我无权打开 bashrc。我可以 cd 到 /usr/bin,但我不能 ls 任何东西,而且我不知道一旦我在那里如何访问 sudo 或 nano。./sudo, sudo.sh ./sudo.sh 都返回“未找到命令”。
如果删除它,如何将 /usr/bin 添加到路径?
编辑
我在这里找到了解决方案:我想我不小心删除了 PATH 变量
我将 PATH 替换为我添加到路径中的程序的路径。所以,在终端中输入这个让我可以再次访问 sudo 和 nano:
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud) 在我的点文件中,我有一些函数依赖于别名或函数的存在以供它们工作。出于某种原因,我可以让它们引用我创建的其他函数,但不能引用命令的别名。我该如何解决?
例子:
function open-dotfiles-commit(){
xopen https://github.com/fatso83/dotfiles/blob/$1;
}
Run Code Online (Sandbox Code Playgroud)
如果我有别名xopen( alias xopen=xdg-open),open-dotfiles-commit命令将失败并显示xopen: cannot find command. 另一方面,如果我用一个名为xopen( function xopen(){ xdg-open; };)的函数替换别名定义,它会起作用!
我什至尝试shopt -s expand_aliases在与定义别名的文件相同的文件中进行设置- 未成功。别名和函数文件来自我的.bashrc.