我已经sudo do something在我的 中放置了一个命令~/.bashrc,这有效,但是每次打开终端时,我都必须输入密码。我如何做到这一点,所以没有密码输入?
我在 gnome-terminal 的首选项中选择了“替换初始标题”设置,但它只显示默认标题“终端”。阅读此答案后,我将其添加到我的.bashrc:
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
Run Code Online (Sandbox Code Playgroud)
并注释掉了这一行:
#PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Run Code Online (Sandbox Code Playgroud)
重新启动终端后,它开始显示user@hostname: ~/currentdir在其标题中,每当我cd转到另一个目录时就将其更改。但是当我启动像cmusand 之类的 CLI 程序时它仍然没有改变vim(例如,vim 将当前文件名设置为标题)。
我已经安装rxvt,一切正常。
Ubuntu 13.04,gnome 终端 3.6.1。
我的 .bashrc - 几乎与默认 ubuntu 安装附带的相同。

After a lot of struggle with virtualenv/virtualenvwrapper I decided to remove all virtualenvs and re-install the packages.
root> su myuser
myuser> sudo pip install virtualenv
myuser> sudo pip install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
I proceeded to add this to my unix users .bashrc file.
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
source /usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)
When I source .bashrc I get about 20 error lines ending with IOError: [Errno 13] Permission denied: '/root/.virtualenvs/premkproject'. I'm running out of ideas...
I have done my homework and tried every suggested …
是否可以在 bash 脚本和 bash 别名中使用所谓的 bang 命令(!+ 命令/符号,如 eg!!或!$:p)?
我想添加行
alias getit='sudo apt-get install !!'
Run Code Online (Sandbox Code Playgroud)
到我的~/.bashrc文件,以便能够通过getit在对命令本身的非成功调用之后键入来安装未找到的命令,类似于工具The Fuck的行为,只是少说脏话......
但是,该行不起作用,如下面的输出所示:
$ cowsay
The application »cowsay« is currently not installed.
You can install it by typing:
sudo apt-get install cowsay
$ getit
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package !!
$
Run Code Online (Sandbox Code Playgroud)
请注意,我自己从德语翻译了第一个命令的输出,因为它LANG=C没有用......无论出于何种原因。
无论如何,您可以看到别名中的 bang-command 不会被解释为被上次执行的命令替换,而是保持相同的字符串。我已经发现 bang-commands 通常只在交互式 shell 中工作,因此不在脚本中。
是否可以更改此设置,以便 …
我正在尝试将我的路径变量设置为如下所示:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin
Run Code Online (Sandbox Code Playgroud)
并且出于某些原因,无论我编辑什么文件,该变量总是看起来像这样(java 路径重复了很多次):
PATH=/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin
Run Code Online (Sandbox Code Playgroud)
我试图编辑我的个人.bashrc和.profile以及/etc/environment,/etc/bash.bashrc,/etc/profile,并将其设置/etc/profile.d。现在,有jdk.sh在/etc/profile.d其中PATH变量是相同的不正确的一个I张贴以上。但是,我试图注释掉该行甚至jdk.sh完全删除,但仍然没有解决。
否则,我已经注意到,如果我以另一个用户身份登录,我将拥有正确的 PATH 变量,并且不会让 java 重复一堆乱七八糟的变量。
所以,我想知道,我还没有检查过的 PATH 变量还能在哪里定义?
当按Ctrl+ Alt+T打开终端时,我会看到一个带有简单输入提示的空白屏幕。
是否可以(通过修改~/.bashrc)显示当前日历,突出显示今天和当前时间?
如果时间可以以大量显示(使用 figlet?),那将是一个奖励。
我希望每次打开 shell 时都可以使用以下别名:
export ZONE="us-eastern1-c"
export INSTANCE_NAME="myInstance"
alias gc='gcloud compute ssh --zone=$ZONE jupyter@$INSTANCE_NAME -- -L 8080:localhost:8080'
Run Code Online (Sandbox Code Playgroud)
我应该把它放进去.bashrc还是.profile?另外,扫描.bashrc我发现:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
那么,这里的最佳做法是什么?我应该将别名(和所需的环境变量)放在第三个文件中.bash_aliases吗?我不是配置文件扩散的忠实粉丝,但如果使用这.bash_aliases是最佳实践,我会这样做。
我创建了一个这个文件: /etc/profile.d/pycharm_alias.sh
startPyCharm() {...
}
alias py=startPyCharm
Run Code Online (Sandbox Code Playgroud)
我重新启动了 PC,但是别名不可用:
===> alias
...empty
Run Code Online (Sandbox Code Playgroud)
如果我通过 ssh 登录到 PC,则别名可用:
===> ssh root@localhost
..
root@pc:~# alias
alias py='startPyCharm'
Run Code Online (Sandbox Code Playgroud)
如何为 ubuntu linux 系统的所有用户提供别名?
我们使用 bash shell。
这是 Kubuntu 21.10 的全新安装,我不明白为什么当我打开 Konsole 时,光标和我的电脑名称之间有空格:
我尝试研究解决方案,并发现这篇文章:Konsole haswhitespaceswhen Istart。.bashrc但我的主目录下没有文件:
但是,如果我以 root 身份打开 Dolphin,我会.bashrc在 root 的主目录下有一个文件:
更新1
我已.bashrc在用户的主目录 ( /home/krillavilla/.bashrc) 下创建了该文件,并将以下代码粘贴到该文件中。这是新的变化:
我还没有修改.bashrc这些目录中的文件:
/root/.bashrc
/etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)
更新2
当我安装终结者终端时,它工作正常:
我已经读过这篇关于在哪里放置别名的帖子。
现在,假设我的自定义命令非常复杂(在输入中接受参数,由几个相继运行的命令组成,为了清楚起见,我想将其保留为多行,涉及引号、双引号等),所以我想将它定义为一个函数,例如
sshdev_system_loop () {
while true; do
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Trying to log into ststem $2 as user $1 ."
timeout 10 ssh $1@$2
done
}
Run Code Online (Sandbox Code Playgroud)
我应该把它放在.bash_aliases或 的末尾.bashrc或 中.profile吗?
一方面,我不想把它放进去,.bash_aliases因为它会“破坏”列表
alias alias_name='command/list of commands'
Run Code Online (Sandbox Code Playgroud)
另一方面,.bashrc它看起来像是操作系统管理的文件,所以我不想向其中添加内容。
那么在 Ubuntu 中将功能添加为自定义命令的最佳实践是什么?
bashrc ×10
bash ×6
command-line ×6
alias ×3
.profile ×1
bash-history ×1
functions ×1
java ×1
kde ×1
kubuntu ×1
permissions ×1
scripts ×1
sudo ×1
virtualenv ×1