我在 /usr/share/scripts/ 上有一些我经常使用的 python 脚本,我希望能够通过只写名称而不是完整路径来执行它们,我该怎么做?
echo $PATH 显示我:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer
Run Code Online (Sandbox Code Playgroud)
所以我尝试在终端上写:
PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export
Run Code Online (Sandbox Code Playgroud)
没有显示错误并且 echo $PATH 现在显示我的新脚本路径,但是当我运行scriptName时,我找不到命令。
我究竟做错了什么?
我是新手。我在 .bashrc 文件中设置了一个别名,如下所示。
alias myrm='mv /home/user/Trash/*'
Run Code Online (Sandbox Code Playgroud)
目的是当我使用 myrm 注释时,例如 $myrm foo,文件“foo”必须移动到我的主文件夹 (/home/user/Trash) 中的垃圾文件夹。
然后我做了
$source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
在此之后,当我尝试通过键入 $myrm foo 来使用 myrm 时,我收到以下错误消息。
mv: 无法统计 '/home/user/Trash/*': 没有那个文件或目录
如何解决这个问题?
标题样的说,这一切:我想获得的东西,如输出的那些整齐的彩色列ls -al,也就是说,在10basetom的回答到这个问题。
我想生成两个子进程,但是要等到第一个子进程到达执行中的某个点(可以通过检查 stdout 来确定),然后再生成第二个子进程。我不确定哪些 unix 命令会参与完成这个任务,并且由于 unix 命令名称的简洁和有时神秘的性质,很难通过谷歌找到任何东西。
我不是在寻求解决我正在尝试解决的特定问题的解决方案(尽管任何额外的指针都会受到赞赏),我主要关心的是知道我想要查找和学习使用哪些 unix 命令。
TMUX 默认启动 shell 作为登录 shell。我正在寻找一种方法来否定文件中的这种行为(以便它启动非登录 shell).tmux.conf。
目前我可以tmux set-option -g default-command "/bin/bash"在 tmux 之外使用。但这只能在 tmux 已经启动时才能完成,我似乎找不到将它集成到 conf 文件的方法。
我正在了解 docker-compose.yaml 的工作原理。我正在尝试在撰写文件中定义一个卷并将其挂载在本地的挂载点。我尝试运行一个基本的 .yaml 来挂载我的卷:
version: '3.2'
services:
mydb:
image: postgres
volumes:
- db-data:var/lib/postgres/data
ports:
- "5432:5432"
volumes:
- db-data:
- driver: local
Run Code Online (Sandbox Code Playgroud)
但是当我运行时docker-compose down,我收到一个错误:
$ docker-compose down
The Compose file '.\docker-compose.yml' is invalid because:
services.mydb.volumes 'type' is a required property
services.mydb.volumes 'type' is a required property
Run Code Online (Sandbox Code Playgroud)
我对此很陌生,并且仍然了解使用 Docker 的所有细微差别。我认为我的问题是缩进错误或我如何使用扩展名调用版本号,但我似乎无法理解错误。
我创建了一个 Windows 快捷方式,其目标看起来像
"C:\Windows\System32\bash.exe" php /c/script.php
(我知道我可以使用我的 php cli 的 Windows 版本来运行它,但出于好奇)
当我单击我的快捷方式时,它只是弹出一个 cmd 窗口并关闭(脚本应该需要几分钟才能运行。
有没有办法将命令通过管道传输到 Windows 上的 bash.exe?
在 Ubuntu 18.04 LT .bashrc 文件中有以下内容:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
Run Code Online (Sandbox Code Playgroud)
xterm-color) 不是不平衡括号的实例吗?为什么该行以两个分号结尾?
需要说明的是,这不是我写的。它在原始文件中,不是我编辑的。
如果有语法错误,我应该向谁报告?
我有自定义脚本来挂载谷歌驱动器。
此脚本的一部分是以下代码:
if [ ! "$(which google-drive-ocamlfuse)" ]
then
echo "Install google-drive-ocamlfuse first!"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
从终端执行,就像魅力一样。
因此,我将其配置为服务:
[Unit]
Description=Mount and umount google drives
[Service]
User=<usernamehere>
Type=oneshot
RemainAfterExit=true
ExecStart=/home/<usernamehere>/mybscripts/gdrivemounter.sh -m
ExecStop=/home/<usernamehere>/mybscripts/gdrivemounter.sh -u
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/<usernamehere>/.Xauthority"
[Install]
WantedBy=graphical.target
Run Code Online (Sandbox Code Playgroud)
不幸的是,我看到退出代码:“首先安装 google-drive-ocamlfuse!” 当我检查服务状态时。
命令which google-drive-ocamlfuse在用户和 root 下为我提供了有效路径:
$ which google-drive-ocamlfuse
/home/<usernamehere>/.opam/default/bin/google-drive-ocamlfuse
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
我试图从操作系统进程的角度来理解 shell 和终端的概念以及它们之间的确切关系。所以我在这个领域几乎没有问题。
健全性检查:据我所知,shell 是用户可以与操作系统交互的界面,即:运行其他进程。虽然shell(例如Bash)只是另一个进程。那正确吗?
有没有办法运行一个不会是 shell 进程的子进程的进程?
环境变量:在bash,还有,当你生成一个shell中运行多个脚本,例如.bashrc,.bash_profile等(取决于外壳类型-互动与非互动,登录与非登录)。这些脚本定义了环境变量。如果有一种方法可以不管任何 shell 来运行进程,那么环境变量从何而来?