标签: bashrc

有什么有用的东西可以添加到一个人的 .bashrc 中?

有什么是你不能没有的,会让我的生活变得更轻松吗?以下是我使用的一些(“磁盘空间”和“文件夹”特别方便)。

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print …
Run Code Online (Sandbox Code Playgroud)

linux bash command-line-interface dotfiles bashrc

141
推荐指数
16
解决办法
14万
查看次数

在不运行 bash_profile 或 bashrc 的情况下登录

因此,假设有人在其中输入了一些内容以.bashrc阻止他(或她)通过 viassh登录(即 ssh 登录因文件中的错误而退出)。有没有什么方法可以让这个人在不执行它的情况下登录(或者.bashrc因为一个运行另一个),或者以其他方式删除/重命名/使文件无效?

假设您没有对机器的物理访问权限,并且这是唯一可以通过 ssh 进入的用户帐户。

供参考:.bash_profile包括.bashrc

[[ -f ~/.bashrc ]] && . ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试过的事情:

ssh user@host "rm ~/.bashrc"

scp nothing user@host:/RAID/home/tom/.bashrc

ssh user@host  "/bin/bash --norc"
Run Code Online (Sandbox Code Playgroud)

都给出错误:

/RAID/home/tom/.bashrc: line 16: /usr/local/bin/file: No such file or directory
/RAID/home/tom/.bashrc: line 16: exec: /usr/local/bin/file: cannot execute: No such file or directory
Run Code Online (Sandbox Code Playgroud)

ssh login bashrc

92
推荐指数
7
解决办法
13万
查看次数

用户定义的 bash_completion.d 脚本的标准位置?

我有用户访问权限(无 root)到 Linux (Suse) 机器,我在那里开发了一些 bash 脚本和相应的 bash 自动完成规则。

由于脚本仅属于我的用户,因此我只需要对我来说“活动”的完整规则(部分原因是我没有 root 写入权限),将我的 bash_completion 脚本放入/etc/bash_completion.d/文件夹不是一个选项。

目前我命名我的文件.bash_completion.myscript并直接从我的.bashrc.

例如,创建一个文件夹/home/myuser/.bash_completion.d/

bash bashrc user-profile

68
推荐指数
5
解决办法
4万
查看次数

“登录”和“交互式” bash shell 之间有什么区别

“登录”和“交互式” bash shell 有什么区别?我在下面引用了维基百科,但有人能给出更好的答案吗?

编辑:这是一个社区维基,所以也许不是投票关闭,您可以提供示例说明哪些情况需要哪种类型的 $SHELL

启动脚本

当 Bash 启动时,它会执行各种不同脚本中的命令。

当 Bash 作为交互式登录 shell 被调用时,它首先从文件 /etc/profile 读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的命令中读取和执行命令。

当登录 shell 退出时,Bash 从文件 ~/.bash_logout(如果存在)读取并执行命令。

当一个不是登录 shell 的交互式 shell 启动时,Bash 从 ~/.bashrc 读取并执行命令(如果该文件存在)。这可以通过使用 --norc 选项来禁止。--rcfile 文件选项将强制 Bash 从文件而不是 ~/.bashrc 读取和执行命令。

linux shell bash command-line-interface bashrc

54
推荐指数
1
解决办法
2万
查看次数

通过 SSH 登录时运行 ssh-agent 和 ssh-add 的直接方法?

当我通过 ssh 登录到我的服务器时,我试图让以下命令自动执行:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我的 ssh 密钥有一个密码短语,每次登录输入一次就可以了。

我尝试将它放在我的 .bashrc 文件中,但是我相信 ssh-agent 会启动一个新的 bash 会话。当我在我的 .bashrc 中有这个后尝试登录时,它卡住了,我必须输入“退出”才能看到“输入密码以解锁密钥”提示

还有其他建议吗?

服务器正在运行 Ubuntu LTS

ubuntu ssh bash bashrc ssh-keygen

53
推荐指数
3
解决办法
8万
查看次数

我搞砸了,退出 .bashrc

我将“退出”放在我的 .bashrc 文件中。我没有对机器的物理访问权限,因此我使用 ssh 连接到它。我没有root权限。每次我连接到服务器时,连接都会自动关闭。

到目前为止,我已经尝试过:

  • 用 scp 和 sftp 覆盖 .bashrc。在我做任何事情之前连接就关闭了。
  • 使用几个不同的 GUI 程序访问 ssh(连接关闭)
  • 用 ftp 覆盖文件。(不能使用ftp)
  • 从我家的电脑
    • $ ssh 主机“bash --noprofile --norc”(连接关闭)
    • $ ssh 主机“mv .bashrc bashrc_temp”(连接关闭)
    • $ ssh 主机“rm .bashrc”(同样的事情)
    • $ ssh host -t(连接关闭)

我可以做些什么来禁用 .bashrc 或者在 .bashrc 被获取之前覆盖文件?

更新

@ring0

我尝试了你的建议,但没有运气。bashrc 文件仍然首先运行。

我尝试的另一件事是使用另一个帐户登录并 sudo 编辑 .bashrc,但我没有此帐户的 sudo 权限。

我想我会联系管理员。

编辑

@shellholic

我不敢相信,但这种方法奏效了!即使“退出”出现在.bashrc 文件的前几行(仅由几个if块和导出语句组成),我仍然设法在 20 次尝试(大约需要 3 分钟)内成功地使用 Ctrl-c 中断它。我删除了 .bashrc 中的违规行,一切又恢复正常。

ssh bashrc

30
推荐指数
2
解决办法
2万
查看次数

如何在 SSH 登录时使用自定义 .bashrc 文件

我发现在与我合作的新公司中,我经常不得不访问生命周期相对较短的 linux 服务器。在这些服务器中的每一个上,我都有一个帐户,但是每当创建一个新帐户时,我都必须通过我的 .bashrc 进行转移。然而,有可能在大约一个月的时间内该服务器将不再存在。我还必须在短时间内(几分钟)访问许多其他服务器,通过我的 .bashrc 进行传输是不值得的,但由于我在很多服务器上工作,这加起来浪费了很多时间。

我不想更改服务器上的任何内容,但我想知道是否有办法拥有“每个连接”的 .bashrc,因此每当我通过 SSH 连接到服务器时,我的设置都将用于该会话。

如果这是可能的,如果我可以对其他配置文件(如 gitconfig 文件)做同样的事情,那就太好了。

ssh configuration bash bashrc

24
推荐指数
2
解决办法
3万
查看次数

使用 .bashrc 而不破坏 sftp

我的问题是我需要设置几个变量,并且每次登录ssh shell时输出几行,同时我必须能够使用sf​​tp通过Filezilla tarnsfer文件。

现在,根据http://www.openssh.org/faq.html 上的 openssh 常见问题解答,如果您的启动脚本回显任何类型的输出,它就会与 sftp 混淆。因此,它要么无限期地延迟,要么因“连接被服务器关闭,退出代码为 128”而出错。

我尝试过将 .bashrc 移动到 .bash_profile 或在 .bashrc 中使用以下代码的解决方案:

if [ "$TERM" != "dumb" ]
then
   source .bashc_real
fi
Run Code Online (Sandbox Code Playgroud)

和:

if [ "$TERM" = "xterm" ]
then
   source .bashc_real
fi
Run Code Online (Sandbox Code Playgroud)

但是,没有任何效果。我的 shell 终端是 bash,我使用 filezilla 连接到 sftp。

linux ssh sftp bashrc

21
推荐指数
2
解决办法
1万
查看次数

~/.bashrc 不是源自 ssh“命令”

在最后.bashrc我补充道:

touch /tmp/bash_noninteractive_test
Run Code Online (Sandbox Code Playgroud)

跑步:

/usr/bin/ssh -v -C root@example.com 'ls'
Run Code Online (Sandbox Code Playgroud)

在主机上(之前交互式登录):

% ls -l /tmp/bash_noninteractive_test
ls: cannot access /tmp/bash_noninteractive_test: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我认为~./bashrc总是来自非交互式 shell,比如通过 SSH?我该如何解决这个问题?

受影响的系统:

% lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty
Run Code Online (Sandbox Code Playgroud)
 % lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.11 (jessie)
Release:    8.11
Codename:   jessie
Run Code Online (Sandbox Code Playgroud)

linux ubuntu debian bash bashrc

21
推荐指数
2
解决办法
2万
查看次数

.bashrc: shopt: 未找到

刚刚使用 Ubuntu 12.04 配置了一个新的 Rackspace 实例,并从他们的 github 中下载了 rbenv 并安装了它。

执行时出现以下错误 . ./~bashrc

$ . ~/.bashrc
sh: 18: /home/deployer/.bashrc: shopt: not found
sh: 26: /home/deployer/.bashrc: shopt: not found
sh: 110: /home/deployer/.bashrc: shopt: not found
sh: 28: /etc/bash_completion: [[: not found
sh: 34: /etc/bash_completion: [[: not found
sh: 51: /etc/bash_completion: Bad substitution
Run Code Online (Sandbox Code Playgroud)

这是我的 .bashrc(用于用户部署者),我添加的唯一内容是顶部的 rbenv 位。

$ cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

if [ -d "${RBENV_ROOT}" …
Run Code Online (Sandbox Code Playgroud)

bashrc ubuntu-12.04

11
推荐指数
1
解决办法
3万
查看次数