我想为rm命令创建一个别名,以便在执行此命令后收到确认消息。所以我正在创建一个这样的别名alias rm='rm -i'。但据我所知,这是一个临时别名,它会一直存在,直到您关闭终端。
正如这里解释的永久保存别名,我需要在终端中执行~/.bash_aliases或~/.bashrc命令并在那里添加我的别名。但是当我执行时,~/.bashrc我收到以下错误消息:
bash: /home/bakhtiyor/.bashrc: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我运行时,~/.bash_aliases我收到另一条错误消息,如下所示:
bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.
Run Code Online (Sandbox Code Playgroud)
实际问题是什么,我该如何解决?
例如,如果您创建别名:
alias cls="clear"
Run Code Online (Sandbox Code Playgroud)
它存在直到你杀死终端会话。当您启动一个新的终端窗口时,别名不再存在。如何创建存在于每个终端会话中的“永久”别名?
我觉得问得很愚蠢,但我似乎无法在任何地方找到答案。我正在尝试按照这些说明来编辑我的 bash 提示,但.bashrc在我的用户目录 ( ~/.bashrc)、我的主目录或主文件系统目录中都没有。
没有.bashrcin /etc/(但是有一个bash.bashrc)。
我是否.bashrc在我的用户或主目录中创建文件?是否有更好的、更新的指令集来修改 bash 提示?
登录和非登录 shell 定义为:
su - $USER # will give you a login shell
bash # will give you a non-login shell
Run Code Online (Sandbox Code Playgroud)
/etc/profile 不会为非登录 shell 调用,例如当您启动 konsole (kde) 时。/etc/profile 仅为登录 shell 调用。
这是为什么?请解释一下,因为我喜欢了解其原理。
我有 Ubuntu 14.04.2。我想让所有用户自动拥有一组特定的别名。我在个人 .bashrc 中设置了别名,但我不想手动将它们复制到其他用户中。理想情况下,它也应该为新创建的用户自动设置这些。
我知道两个 bash 登录脚本之间的区别:
.bashrc 仅由“非登录”shell 运行。
.bash_profile(or .bash_loginor .profile) 由“登录”shell 执行。
有没有人有一些很好的例子来说明哪些东西更适合仅登录执行,这样我只会将它们放入.bash_profile,但它们实际上没有意义.bashrc?
(我知道我们大多数源.bashrc出.bash_profile,所以似乎并没有在相反的问题多一点...)
我需要在计算机启动后运行一批简单的命令,例如
sudo thing
sudo thing1 -p
Run Code Online (Sandbox Code Playgroud)
但对于我的生活,我无法弄清楚如何。我用谷歌搜索又搜索,我一直发现同样的事情:将命令放入 /etc/rc.local 或 /etc/init.d/rc.local 文件中。问题是我的系统上不存在这些文件!此外,我已经读到 /etc/rc.local 无论如何都已弃用,那么正确且简单的方法是什么?
我想知道如何处理这两件事:
计算机启动后运行命令
指定用户登录后运行命令,以指定用户身份运行
(并且仅通过在终端中编辑内容来实现所有这些,无需 GUI 工具)
谢谢你。
我希望每次打开 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。
每次我在我的 .bash_profile 文件中添加一个新别名时,我发现我必须. .bash_profile在我的终端中执行命令才能使其工作。
为什么别名不能自动工作?