我正在从bash切换到fish,但在移植我经常使用的方便功能时遇到了困难。这个函数的目的是从我的源树的根目录运行make,而不管我的shell当前位于哪个目录。
在bash中,这只是:
function omake {(
cd $SOURCE_ROOT;
make $@;
)}
因为鱼没有子壳,所以我能做的最好的就是:
function omake
pushd
cd $SOURCE_ROOT
make $argv
popd
end
这是可行的,但是请注意,在用^C中断了fish版本之后,shell仍然在$SOURCE_ROOT中,但是中断bash版本会使
我正在尝试更改fish-shell中单个用户的$PATH,以便berryconda在默认python之前运行。
我已经找到了config.fish文件,并添加了该文件为登录shells添加的内容。
if status --is-login
set PATH /root/berryconda3/bin/python $PATH
end
我的问题是,这似乎根本不会改变$PATH,而且我也希望它只针对一个特定的用户,所以我不认为这是正确的。如何在fish-shell中更改单个用户的$PATH。
我想在fish启动时将./bin目录(相对于当前外壳目录)添加到$PATH。请注意,fish是一个外壳。
echo $PATH
set PATH ./bin $PATH
echo $PATH
如果我将这些行放在~/.config/fish/config.fish中,shell将回显相同的路径集合。正确添加了绝对路径。
如果我打开外壳并在包含bin的某个目录中输入相同的set PATH ./bin $PATH,它就会被成功添加。但是,当当前目录中没有bin时,它会显示一个错误。
set: Could not add component ./bin to PATH.
set: Value too
当我以用户fish的身份ssh到server.foo.com并执行docker-compose up时,docker将看到一个相应的.env文件,该文件位于同一目录中。
[fish@staging-core ~]$ ls -al
total 28
drwx------. 4 fish fish 191 Jun 18 21:47 .
drwxr-xr-x. 4 root root 34 Jun 18 20:35 ..
-rw-------. 1 fish fish 558 Jun 18 22:15 .bash_history
-rw-r--r--. 1 fish fish 1
问题:
⚙ ~ fish --version
fish, version 2.5.0-238-ga811ae2
⚙ ~ echo $FISH_VERSION
2.2.0
正在尝试调试:
⚙ ~ exec fish
set: Invalid character “.” in variable name. Only alphanumerical characters and underscores are valid in a variable name.
/usr/local/share/fish/functions/setenv.fish (line 10):
我的pyenv运行得很好,但它似乎没有运行位于/usr/local/var/pyenv/versions/project/bin/activate.fish的激活脚本
当激活我的环境时,它会给出以下输出,但它不会从激活脚本中回显任何内容,这表明它没有运行。
dani@localhost ~/d/project> pyenv activate project
pyenv-virtualenv: prompt changing not working for fish.
当然,我可以手动source该文件,但我太急于找出为什么它没有运行。有没有某种调试模式?我不知道该如何接近。
我正在构建一个应该在csh、bash和fish中工作的脚本,没有任何更改:
这在所有的贝壳中都是正确的,
perl -e '$bash=shift;$csh=shift;for(@ARGV){unlink;rmdir;}if($bash=~s/h//){exit$bash;}exit$csh;' "$?h" "$status" $PARALLEL_TMP
除了fish抱怨:
fish: $? is not the exit status. In fish, please use $status.
是否有一个兼容的方法,我可以告诉鱼:请不要警告,我
运行eval $PATH会产生以下消息:
The file '/usr/local/var/rbenv/shims' is not executable by this user
- (line 1): begin; /usr/local/var/rbenv/shims /usr/local/bin /usr/local/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin
^
from sourcing file -
called on line 60 of file /usr/loc
该命令在fish终端中运行良好:
source ~/.config/fish/config.fish
这是config.fish中一个相关的fish函数
function sf
command source ~/.config/fish/config.fish
end
当我运行它时,我会得到以下错误:
Command 'source' not found, did you mean:
command 'gource' from deb gource (0.51-1build1)
Try: sudo apt install <deb name&g
我希望运行一个简单的shell脚本来简化对conda环境的管理。通过conda activate在linux os中激活conda环境在shell中运行良好,但在shell脚本中却是有问题的。有人能告诉我为什么会发生这种事吗?
重复此问题的示例:
# default conda env
$ conda info | egrep "conda version|active environment"
active environment : base
conda version : 4.6.9
# activate new env to prove
我很难找到有关以下命令的信息?此命令用于从.rc文件中调用。
这个语法在bash和zsh中被称为什么?我知道这两者都适用,因为shell文件都是针对两者的。当它放置在一个文件中时,它会做什么?它在文件/函数/cli中做什么?
在fish ()中,什么是等价的?在config.fish中,相同的bash/zsh文件会使用该等效命令吗?
> . /path/to/sh-file.sh # what does this do? nothing happens on cli when called.
> cat /path/to/sh-file.sh
[ -d "${_
我试图自动启动我的粉碎仪表板时,我的覆盆子Pi靴子。我计划通过crontab中的@reboot选项运行一个脚本(类似于我已经自动关闭了仪表板)。然而,我在运行下面的脚本时遇到了困难。
command = 'cd "/home/pi/test"'
command2 = 'smashing start'
system "echo hi"
system command
puts command
system "echo Movement"
system co