在编写shell程序时,我们经常使用/bin/sh和/bin/bash.我经常使用bash,但我不知道它们之间有什么区别.
bash和之间的主要区别是sh什么?
我们究竟需要意识到在编程时bash和sh?
我正在尝试编写一个小脚本来将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
Run Code Online (Sandbox Code Playgroud)
我将此文件保存为proj,添加了执行权限chmod,并将其复制到/usr/bin.当我通过以下方式调用它时
proj,它什么都不做.我究竟做错了什么?
当我exit在shell脚本中使用命令时,脚本将终止终端(提示).有没有办法终止脚本然后留在终端?
我的脚本run.sh应该通过直接获取源或从其他脚本获取来执行.
编辑:更具体,有两个脚本run2.sh作为
...
. run.sh
echo "place A"
...
Run Code Online (Sandbox Code Playgroud)
而run.sh作为
...
exit
...
Run Code Online (Sandbox Code Playgroud)
当我运行它时. run2.sh,如果它进入exit代码行run.sh,我希望它停在终端并留在那里.但是使用exit,整个终端都关闭了.
PS:我试过用return,但echo代码行仍然会被执行....
考虑以下:
me@mine:~$ cat a.sh
#!/bin/bash
echo "Lines: " $LINES
echo "Columns: " $COLUMNS
me@mine:~$ ./a.sh
Lines:
Columns:
me@mine:~$ echo "Lines: " $LINES
Lines: 52
me@mine:~$ echo "Columns: " $COLUMNS
Columns: 157
me@mine:~$
Run Code Online (Sandbox Code Playgroud)
变量$LINES和$COLUMNS是shell变量,不是环境变量,因而不会被导出到子进程(但会被自动更新,当我调整xterm窗口,通过SSH从远程位置登录,即使).有没有办法让我的脚本知道当前的终端大小?
编辑:我需要这个作为解决方法来解决这个问题:vi(以及vim,less和类似的命令)每次使用它时都会搞砸屏幕.更改终端不是一个选项,因此我正在寻找解决方法(向下滚动$LINES线肯定不是完美的解决方案,但至少比丢失前一个屏幕更好)
有没有人知道是否有办法在shell中自动运行一个命令列表(来自文本文件)?
我需要运行很多脚本(大约1000个).脚本在python中,每个脚本有2个参数(dir_#和示例#)
我制作的文本文件看起来像这样......
python /home/name/scripts/get_info.py dir_1 sample1
python /home/name/scripts/get_info.py dir_2 sample2
python /home/name/scripts/get_info.py dir_3 sample3
python /home/name/scripts/get_info.py dir_4 sample4
...
Run Code Online (Sandbox Code Playgroud)
所以,我希望将这个文本文件作为参数传递给终端中的命令,可以自动完成工作......
提前致谢,
佩希
我想在使用 WSL2 的 vscode 中使用类似oh-my-bash 的东西。但是根据文档:
在 WSL 中启动 VS Code Remote 时,不会运行任何 shell 启动脚本。这样做是为了避免针对 shell 调整的启动脚本出现问题。如果您想运行其他命令或修改环境,可以在设置脚本中完成
~/.vscode-server/server-env-setup(内部人士~/.vscode-server-insiders/server-env-setup:)。如果存在,则在服务器启动之前处理该脚本。
我添加了一个~/.vscode-server/server-env-setup,根据日志发现并执行了它,但我的 Linux 技能非常基础,我不知道如何安装我的配置文件。我努力了
bash ~/.profile
Run Code Online (Sandbox Code Playgroud)
……但这似乎没有任何作用。我也尝试过
#!/bin/bash
source ~/.profile
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误/mnt/c/Users/cber/.vscode/extensions/ms-vscode-remote.remote-wsl-0.40.3/scripts/wslServer.sh: 3: /home/cber/.vscode-server/server-env-setup: source: not found
更新
下面回答了如何获取配置文件的问题,但我在 WSL2 上的 vs-code 中使用powerline-go 的问题仍然存在,但我将其移至一个新问题以结束此问题。