Linux里面/etc/profile和~/.bash_profile区别是什么?


· TA获得超过1.2万个赞

印象里有这么一个问题,就是 bash 如果被用来运行脚本,会先去执行当前用的 .bashrc 。这就导致你这种情况,因为开机时所有的 shell 脚本都是用 root 来运行的。

好像 ~/.bash_login 不会这样吧?没印象了。我只是印象里,如果在登陆时运行的指令,是有个专用的地方可以放而不是扔到 bashrc 里。
不过你这直接 root 敢死队,确实容易出状况啊……如果换个一般用户来弄这个就没问题了。

bash_login 不是看系统有没有。这个是 bash 自己读取的事情。bash 自己会去读取很多配置文件的,好象有 7、8 个呢吧,这个文件没有的话,他就会跳过继续读取后面的配置文件。
我记得 bashrc 就是最先执行,之后才是 profile 。

1、项目中本地有一组图片需要循环遍历展示,在使用v-for遍历之后发现无法展示图片,解决方法如下。

2、首先,正常的图片路径如下,但是想要展示不能按正常的来。需要遍历的数据正常情况如下。

 

3、假设使用以下的方法

这种做法拿不到本地图片,原因不明,但是有解决方法。

4、解决方法如下,在导入路径时使用 require

  • 4.1、这里需要改变以下需要遍历数据的本地图片地址,本质其实就是把图片地址拆成两节,使用 require 拼接。先修改本地需遍历的数据,如下。
 
  • 4.2、这里可以发现后面的图片路径地址少了一截,这里对比一下少了啥。
  • 我们会发现少了…/common/这个片段,那个片段去哪儿?后面使用require会用到。

5、修改本地需要遍历的数据之后,我们再去需改遍历图片的代码。我们对比一下前后的代码,

  • 5.1、只是未修改的。
  • 5.2、我们会发现这里的图片地址发生了明显的变化。
  • 由此我们知道之前的本地需要遍历的数据里面少的…/common/这个片段是加在了这里。
    使用了require将被拆开的图片地址再次拼接起来。这样就可以遍历展示本地图片了。
  • 这里我们在拆分图片路径地址时,应该注意一边的固定不变的,一边是动态的。比如这里的…/common/就是不变的,后面的地址会动态变动,因此提出…/common/放在require里面。

0 跳到行首(是数字零,不是字母O),效用等同于 <Home> 键
^ 跳到从行首开始第一个非空白字符
nG 跳到第n行,比如 10G 是移动到第十行
15| 移动到当前行的 15列
w 跳到下一个单词开头 (word: 标点或空格分隔的单词)
W 跳到下一个单词开头 (WORD: 空格分隔的单词)
e 跳到下一个单词尾部 (word: 标点或空格分隔的单词)
E 跳到下一个单词尾部 (WORD: 空格分隔的单词)
b 上一个单词头 (word: 标点或空格分隔的单词)
B 上一个单词头 (WORD: 空格分隔的单词)
) 向前移动一个句子(句号分隔)
( 向后移动一个句子(句号分隔)
} 向前移动一个段落(空行分隔)
{ 向后移动一个段落(空行分隔)
+ 移动到下一行首个非空字符(同回车键)
- 移动到上一行首个非空字符
fx 跳转到下一个为 x 的字符,2f/ 可以找到第二个斜杆
Fx 跳转到上一个为 x 的字符
tx 跳转到下一个为 x 的字符前
Tx 跳转到上一个为 x 的字符前
; 跳到下一个 f/t 搜索的结果
, 跳到上一个 f/t 搜索的结果
gj 光标下移一行(忽略自动换行)
gk 光标上移一行(忽略自动换行)

i 在光标处进入插入模式
I 在行首进入插入模式
a 在光标后进入插入模式
A 在行尾进入插入模式
o 在下一行插入新行并进入插入模式
O 在上一行插入新行并进入插入模式
gi 进入到上一次插入模式的位置
CTRL-[ 退出插入模式(同 ESC 等价,但更顺手)
CTRL-O 临时退出插入模式,执行单条命令又返回插入模式
CTRL-\ CTRL-O 临时退出插入模式(光标保持),执行单条命令又返回插入模式
CTRL-R 0 插入寄存器(内部 0号剪贴板)内容,CTRL-R 后可跟寄存器名
CTRL-R " 插入匿名寄存器内容,相当于插入模式下 p粘贴
CTRL-R = 插入表达式计算结果,等号后面跟表达式
CTRL-R : 插入上一次命令行命令
CTRL-R / 插入上一次搜索的关键字
CTRL-U 删除当前行所有字符

R 进入替换模式,直至 ESC 离开
s 替换字符(删除光标处字符,并进入插入模式,前可接数量)
S 替换行(删除当前行,并进入插入模式,前可接数量)
cc 改写当前行(删除当前行并进入插入模式),同 S
cw 改写光标开始处的当前单词
ciw 改写光标所处的单词
caw 改写光标所处的单词,并且包括前后空格(如果有的话)
c^ 改写到行首(第一个非零字符)
C 改写到行尾(同c$)
ci" 改写双引号中的内容
ci' 改写单引号中的内容
cib 改写小括号中的内容
cab 改写小括号中的内容(包含小括号本身)
ci) 改写小括号中的内容
ci] 改写中括号中内容
ciB 改写大括号中内容
caB 改写大括号中的内容(包含大括号本身)
ci} 改写大括号中内容
c2w 改写下两个单词
ct( 改写到小括号前
x 删除当前字符,前面可以接数字,3x代表删除三个字符
d^ 删除到行首(第一个非零字符)
D 删除到行末(同 d$)
diw 删除光标所处的单词
daw 删除光标所处的单词,并包含前后空格(如果有的话)
di" 删除双引号中的内容
di' 删除单引号中的内容
dib 删除小括号中的内容
di) 删除小括号中的内容
dab 删除小括号内的内容(包含小括号本身)
di] 删除中括号中内容
diB 删除大括号中内容
di} 删除大括号中内容
daB 删除大括号内的内容(包含大括号本身)
d2w 删除下两个单词
dt( 删除到小括号前
dgg 删除到文件头部
g~iw 替换当前单词的大小写
gUiw 将单词转成大写
guiw 将当前单词转成小写

y$ 复制当前位置到本行结束的内容
Y 复制当前行,同 yy
3yy 复制光标下三行内容
v0 选中当前位置到行首
v$ 选中当前位置到行末
vib 选中小括号内的东西
vi) 选中小括号内的东西
vi] 选中中括号内的东西
viB 选中大括号内的东西
vi} 选中大括号内的东西
vis 选中句子中的东西
vab 选中小括号内的东西(包含小括号本身)
va) 选中小括号内的东西(包含小括号本身)
va] 选中中括号内的东西(包含中括号本身)
vaB 选中大括号内的东西(包含大括号本身)
va} 选中大括号内的东西(包含大括号本身)
gv 重新选择上一次选中的文字
:set paste 允许粘贴模式(避免粘贴时自动缩进影响格式)
"?yy 复制当前行到寄存器 ? ,问号代表 0-9 的寄存器名称
"?d3j 删除光标下三行内容,并放到寄存器 ? ,问号代表 0-9 的寄存器名称
"?p 将寄存器 ? 的内容粘贴到光标后
"?P 将寄存器 ? 的内容粘贴到光标前
ddp 交换两行内容:先删除当前行复制到寄存器,并粘贴
"_[command] 使用[command]删除内容,并且不进行复制(不会污染寄存器)

tx 光标位置到字符 x 之前
fx 光标位置到字符 x 之处
iw 整个单词(不包括分隔符)
aw 整个单词(包括分隔符)
iW 整个 WORD(不包括分隔符)
aW 整个 WORD(包括分隔符)
is 整个句子(不包括分隔符)
ab 小括号内(包含小括号本身)
aB 大括号内(包含大括号本身)
a) 小括号内(包含小括号本身)
a] 中括号内(包含中括号本身)
a} 大括号内(包含大括号本身)
a' 单引号内(包含单引号本身)
a" 双引号内(包含双引号本身)
2i) 往外两层小括号内
2a) 往外两层小括号内(包含小括号本身)
2f) 到第二个小括号处
2t) 到第二个小括号前

n 向同一方向执行上一次搜索
N 向相反方向执行上一次搜索
* 向前搜索光标下的单词
:%s/p1/p2/gc 将当前文件中全替换p1为p2,并且每处询问你是否替换

d 删除高亮选中的文字
x 删除高亮选中的文字
c 改写文字,即删除高亮选中的文字并进入插入模式
s 改写文字,即删除高亮选中的文字并进入插入模式
o 跳转到标记区的另外一端
O 跳转到标记块的另外一端
g CTRL-G 显示所选择区域的统计信息

CTRL-O 跳转到上一个位置
CTRL-I 跳转到下一个位置
gd 跳转到局部定义(光标下的单词的定义)
gD 跳转到全局定义(光标下的单词的定义)
gf 打开名称为光标下文件名的文件
[[ 跳转到上一个顶层函数(比如C语言以大括号分隔)
]] 跳转到下一个顶层函数(比如C语言以大括号分隔)
[m 跳转到上一个成员函数
]m 跳转到下一个成员函数
[{ 跳转到上一处未匹配的 {
]} 跳转到下一处未匹配的 }
[( 跳转到上一处未匹配的 (
]) 跳转到下一处未匹配的 )
[c 上一个不同处(diff时)
]c 下一个不同处(diff时)
[/ 跳转到 C注释开头
]/ 跳转到 C注释结尾
`` 回到上次跳转的位置
'' 回到上次跳转的位置
`. 回到上次编辑的位置
'. 回到上次编辑的位置

:r !dir 将 dir 命令的输出捕获并插入到光标后
:new 打开一个新的窗口编辑新文件
:enew 在当前窗口创建新文件
:vnew 在左右切分的新窗口中编辑新文件
:tabnew 在新的标签页中编辑新文件

:bn 切换到下一个缓存
:bp 切换到上一个缓存
:set hidden 设置隐藏模式(未保存的缓存可以被切换走,或者关闭)
:set nohidden 关闭隐藏模式(未保存的缓存不能被切换走,或者关闭)

CTRL-W w 循环切换到下一个窗口
CTRL-W W 循环切换到上一个窗口
CTRL-W p 跳到上一个访问过的窗口
CTRL-W + 增加当前窗口的行高,前面可以加数字
CTRL-W - 减少当前窗口的行高,前面可以加数字
CTRL-W < 减少当前窗口的列宽,前面可以加数字
CTRL-W > 增加当前窗口的列宽,前面可以加数字
CTRL-W H 将当前窗口移动到最左边
CTRL-W J 将当前窗口移动到最下边
CTRL-W K 将当前窗口移动到最上边
CTRL-W L 将当前窗口移动到最右边
CTRL-W f 在新窗口中打开名为光标下文件名的文件
CTRL-W gf 在新标签页中打开名为光标下文件名的文件
CTRL-W T 将当前窗口移到新的标签页中

:tabs 显示所有标签页
:tabc 关闭当前标签页
:tabo 关闭其他标签页
:tabn n 切换到第n个标签页,比如 :tabn 3 切换到第三个标签页
:tablast 切换到最后一个标签页
:tab drop <file> 如果文件已被其他标签页和窗口打开则跳过去,否则新标签打开
:tab split 在新的标签页中打开当前窗口里的文件
:tab ball 将缓存中所有文件用标签页打开
ngt 切换到第n个标签页,比如 2gt 将会切换到第二个标签页

ma 保存当前位置到书签 a ,书签名小写字母为文件内,大写全局
'a 跳转到书签 a所在的行
`a 跳转到书签 a所在位置
`. 跳转到上一次编辑的行
'A 跳转到全文书签 A
[' 跳转到上一个书签
]' 跳转到下一个书签
'< 跳到上次可视模式选择区域的开始
'> 跳到上次可视模式选择区域的结束
:delm! 删除所有缓冲区标签(小写字母), 不能删除文件标签和数字标签

:set ttimeout 允许终端按键检测超时(终端下功能键为一串ESC开头的扫描码)
:set smartcase 智能大小写,默认忽略大小写,除非搜索内容里包含大写字母
:set list 设置显示制表符和换行符
:set paste 进入粘贴模式(粘贴时禁用缩进等影响格式的东西)
:set all 列出所有选项设置情况

:h summary 帮助你更好的使用内置帮助系统
- 永远不要用 CTRL-C 代替 <ESC> 完全不同的含义,容易错误中断运行的后台脚本
- 在行内左右移动光标时,多使用w b e或W B E,而不是h l或方向键,这样会快很多
- 自己要善于总结新技巧,比如移动到行首非空字符时用 0w 命令比 ^ 命令更容易输入
- 在空白行使用 dip 命令可以删除所有临近的空白行,viw 可以选择连续空白
- 用 v 命令选择文本时,可以用 o 掉头选择,有时很有用
- 写文章时,可以写一段代码块,然后选中后执行 :!python 代码块就会被替换成结果
- 搜索时可以用 CTRL-R CTRL-W 插入光标下的单词,命令模式也能这么用
- 映射按键时,应该默认使用 noremap ,只有特别需要的时候使用 map
- 当你觉得做某事很低效时,你应该停下来,u u u u 然后思考正确的高效方式来完成
- 用 y复制文本后,命令模式中 CTRL-R 然后按双引号 0 可以插入之前复制内容












 
 
 
 
 





我要回帖

更多关于 bash profile 的文章

 

随机推荐